首页 栈实验报告

栈实验报告

举报
开通vip

栈实验报告实验项目名称 栈的应用 一. 实验目的 掌握栈的特点(先进后出FILO)及基本操作,如入栈、出栈等,栈的顺序存储结构和链式存储结构,以便在实际问题背景下灵活应用。 三.实验内容 1.顺序栈的实现和运算 2.链栈的实现和运算 四、主要仪器设备及耗材 VC++6.0运行环境实现其操作 五.程序算法 1>.顺序栈的实现 a. 顺序栈的数据类型 CONST  int  maxsize=maxlen;  //定义栈的最大容量为maxlen Struct  seqstack                          ...

栈实验报告
实验项目名称 栈的应用 一. 实验目的 掌握栈的特点(先进后出FILO)及基本操作,如入栈、出栈等,栈的顺序存储结构和链式存储结构,以便在实际问题背景下灵活应用。 三.实验内容 1.顺序栈的实现和运算 2.链栈的实现和运算 四、主要仪器设备及耗材 VC++6.0运行环境实现其操作 五.程序算法 1>.顺序栈的实现 a. 顺序栈的数据类型 CONST  int  maxsize=maxlen;  //定义栈的最大容量为maxlen Struct  seqstack                                    {elemtype stack[maxsize]; //将栈中元素定义为elemtype类                        型 int top;                  //指向栈顶位置的指针(数组编号) } b. 初始化栈 void  inistack(seqstack  &s) { s.top=0;  } c. 进栈 void  push(seqstack  &s, elemtype x) { if (s.top==maxsize-1}  cout<<”overflow”; else { s.top++; s.stack[s.top]=x; } } d. )  退栈 void pop(seqstack  &s) { if  (s.top= =0)  cout<<”underflow”; else s.top--;  } e. )  取栈顶元素 elemtype  gettop(seqstack  s) { if  (s.top= =0) {  cout<<”underflow”; return 0;} else return  s.stack[s.top]; } f. )  判栈空否 int  empty(seqstack  s) { if (s.top= =0) return  1; else  return 0; } 2>.链栈的实现 a. 栈初始化 void inistack(link *top) { top->next=NULL;} b. 进栈运算 void push(link *top,int x) { link *s; s=new link; s->data=x; s->next=top->next;  //头插法 top->next=s; } c. 退栈运算 void pop(link *top) { link *s; s=top->next; if(s!=NULL) { top->next=s->next; delete(s); } } d. 取栈顶元素 elemtype gettop(link *top) { if(top->next!=NULL) return(top->next->data); else return(NULL); } e. 判栈空 int empty(link *top) { if(top->next==NULL) return(1); else return(0); } 六.程序源代码 1>.顺序栈的实现代码 #include #define max 100 struct seqstack { int stack[max]; int top; }; void init(seqstack &s)    /*初始化*/ { s.top=0; //return 1; } void push(seqstack  &s,int x)    /*入栈操作*/ { if (s.top==max) cout<<"the stack is overflow!"; else { s.top++; s.stack[s.top]=x; } } void display(seqstack &s)  /*显示栈所有数据*/ { int t; t=s.top; if(t==0) cout<<"the stack is empty!"; else {  cout<<"从栈顶到栈底输出:"<"; t--; } } cout< 记录 混凝土 养护记录下载土方回填监理旁站记录免费下载集备记录下载集备记录下载集备记录下载 */ { if(s.top==0) cout<<"the stack is empty!"; else s.top--; } int gettop(seqstack s)  /*得到栈顶数*/ { if(s.top==0) return 0; else         return s.stack[s.top]; } int IsEmpty(seqstack s)  { if(s.top == 0) return 1; return 0; } main() { seqstack p; int i,x,y; init(p); cout<<"输入元素到0时为止"<>i; while(i) { push(p,i); cin>>i; } pop(p); x=gettop(p); cout<<"x="<.链栈的实现代码 #include typedef struct QNode { char data; QNode *next; }QNode,*QueuePtr; typedef struct { QueuePtr front; QueuePtr rear; }LinkQueue; InitQueue(LinkQueue &Q) { Q.front=Q.rear=new QNode; Q.front->next=NULL; return 0; } EnQueue(LinkQueue &Q,char e) { QueuePtr p; p=new QNode; p->data=e; p->next=NULL; Q.rear->next=p; Q.rear=p; return 0; } void disp(LinkQueue &Q) //打印队列 { QueuePtr p; p=Q.front->next; while(p!=NULL)                      { cout<data<<"->"; p=p->next; } } DeQueue(LinkQueue &Q,char &e) { QueuePtr p; if(Q.front==Q.rear)return 1; p=Q.front->next; e=p->data; Q.front->next=p->next; if(Q.rear==p) Q.rear=Q.front; delete p; return 0; } void main() { LinkQueue Q; char e,e1; InitQueue(Q); cout<<"输入队列元素,0时结束:"<>e; while(e!='0'){ EnQueue(Q,e); cin>>e; } cout<<"队列为:"<.顺序栈的实验结果 2>.链栈的实验结果 八、思考讨论题或体会或对改进实验的建议 (1)体会 a.C++语言知识不懂,需要好好学习; b.对单链表不够熟悉,要多练习创建单链表及其基本操作。 九、参考资料 a.《数据结构》 李根强主编  中国国水利水电出版社 b.《C++语言程序设计》 郑莉  董渊 何江舟编  清华大学出版社
本文档为【栈实验报告】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
is_079973
暂无简介~
格式:doc
大小:32KB
软件:Word
页数:17
分类:互联网
上传时间:2019-05-05
浏览量:95