永发信息网

采用顺序存储结构(用动态数组)或链式存储结构,编写主函数演示顺序栈/链栈的基本操作

答案:1  悬赏:20  手机版
解决时间 2021-02-13 00:24
按照抽象数据类型栈的定义,采用顺序存储结构(用动态数组)或链式存储结构,编写主函数演示顺序栈/链栈的基本操作.
最佳答案
#include<iostream>
#include"stdlib.h"
using namespace std;
#definestack_init_size 100
#definestackincrement   10
typedef int selemtype;
typedef int status;
typedef struct{
     selemtype *base;
     selemtype *top;
     int stacksize;
}sqstack;
statusinitstack(sqstack &s)
{
     s.base =(selemtype *)malloc(stack_init_size* sizeof(selemtype));
     if(!s.base)exit(0);
     s.top=s.base;
     s.stacksize = stack_init_size;
     return 1;
}
voidcreate_sqstack(sqstack &s)
{
     int i,n;
     cout<<"请输入栈的长度:"<<endl;
     cin>>n;
     cout<<"请输入栈中的元素:"<<endl;
     for(i=0;i<n;i++){
       cin>>s.top[i];}
     s.top=s.base;
     for(i=0;i<n;i++){
       s.top=s.top+1;}
}
status push(sqstack&s,selemtype e)
{
     if(s.top-s.base>=s.stacksize){
       s.base=(selemtype *)realloc(s.base,(s.stacksize+stackincrement)*sizeof(selemtype));
       if(!s.base)exit(0);
       s.top=s.base+s.stacksize;
       s.stacksize+=stackincrement;}
     *s.top++=e;
     return 1;
}
status pop(sqstack&s,selemtype &e)
{
     if(s.top==s.base)return 0;
     e= *--s.top;
     return 1;
}
statusstackempty(sqstack s)
{
     if(s.top==s.base)
       return 0;
     else
       return 1;
}
void conversion(int n)
{
     sqstack s;int e ;
     initstack(s);
     while(n){
       push(s,n%2);
       n=n/2;}
     cout<<"二进制数:"<<endl;
     while(stackempty(s))
     {pop(s,e);
     cout<<e;}
     cout<<endl;
}
void main()
{    sqstack s;int i,e,*p,n;
     initstack(s);
     create_sqstack(s);
     cout<<"插入元素为:"<<endl;
     cin>>e;
    push(s,e);
     p=s.top;
     s.top=s.base;
     cout<<"插入元素后的栈为:"<<endl;
     for(i=0;i<p-s.base;i++){
       cout<<*s.top<<" ";
       s.top=s.top+1;}
     cout<<endl;
     pop(s,e);
     p=s.top;
     s.top=s.base;
    cout<<"删除的栈顶元素为:"<<endl<<e<<endl;
     cout<<"删除栈顶元素后的栈为:"<<endl;
     for( i=0;i<p-s.base;i++){
       cout<<*s.top<<" ";
       s.top=s.top+1;}
     cout<<endl;
     cout<<"十进制数:"<<endl;
     cin>>n;
     conversion(n);
     system("pause");
}上学期正好做过。。
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
实用的家用笔记本电脑
模拟GOLF地址在什么地方,想过去办事
眉间雪的开头听着好熟悉,有没有人知道那首歌
电视机会重启,会没声音,会开不起来怎么办
大拇指漆面快修地址在什么地方,我要处理点事
【模拟人生中世纪 在一个微不足道的方面能引
乐仙多艺术装饰地址有知道的么?有点事想过去
迪兰HD7870 酷能+ 2G Extreme和迪兰Devil HD7
东风商用车技术服务部地址在哪,我要去那里办
两可图形反映出人对事物知觉的()
赵星农村猪羊肉店在哪里啊,我有事要去这个地
夏至吃哪些蔬菜
我是男生,现在在外面,想上厕所,怎么办!!
生完孩子脸上的黑头多了 而且毛孔也大了 怎么
青岛六中新校区和开发区一中哪个好
推荐资讯
玩手机游戏能花几千块钱吗?
土家酱香饼在哪里啊,我有事要去这个地方
颜迪美美容养生会所怎么去啊,我要去那办事
做百度竞价的人员怎么给公司提合理化建议啊?
汽轮机的工作原理
回家时在对面的鱼塘走,看见电线杆,写这中国
我是中盈NX-500的 我的端口是从usb转合并端口
语文题: 展开联想!!急!! (不用很长,展
飞机托运行李,24寸的行李箱装满会超重么?
刚才有人自称是法院的律师给我发短信,让我去
男生默默守护女生的漫画(注:是漫画不是动漫
彬潼美容养生会所怎么去啊,我要去那办事
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?