数据结构---栈和队列概要

上传人:今*** 文档编号:108140975 上传时间:2019-10-22 格式:DOC 页数:18 大小:126.55KB
返回 下载 相关 举报
数据结构---栈和队列概要_第1页
第1页 / 共18页
数据结构---栈和队列概要_第2页
第2页 / 共18页
数据结构---栈和队列概要_第3页
第3页 / 共18页
数据结构---栈和队列概要_第4页
第4页 / 共18页
数据结构---栈和队列概要_第5页
第5页 / 共18页
点击查看更多>>
资源描述

《数据结构---栈和队列概要》由会员分享,可在线阅读,更多相关《数据结构---栈和队列概要(18页珍藏版)》请在金锄头文库上搜索。

1、数据结构实验报告实验二:栈和队列专 业: 班 级: 姓 名: 学 号: 指导教师: 日 期: 2015. 实验二 栈和队列1、 实验目的: (1)掌握栈、队列的思想及其存储实现。 (2)掌握栈、队列的常见算法的程序实现。 (3)明确栈、队列均是特殊的线性表。2、 试验内容: 以下实验,1和2为必做内容,3和4选做一个。1栈的实现及应用(1)采用链式存储实现栈的初始化、入栈、出栈操作。(2)采用顺序存储实现栈的初始化、入栈、出栈操作。(3)设表达式以字符形式已存入数组En中,#为表达式的结束符,试写出判断表达式中括号(、)、是否配对的C语言描述算法。 (4)在主函数中设计一个简单的菜单,分别测试

2、上述算法。#include #include #include #define STACK_INIT_MAXSIZE 100#define STACKINCREAMENT 10using namespace std;typedef struct SNode1 int data; struct SNode1 *next;LNode1;typedef struct LNode1 *top; int length;Stack1;void InitStack1(Stack1 &S) S.top=NULL; S.length=0;void push1(Stack1 &S,int e) LNode1 *p

3、; p=(LNode1*)malloc(sizeof(LNode1); if(!p) exit(0); p-data=e; p-next=S.top; S.top=p; +S.length;bool pop1(Stack1 &S) if(!S.top) return false; else S.top=S.top-next; -S.length; return true; void PrintStack1(Stack1 &S) while(S.top) coutdata ; pop1(S); typedef struct int *top; int *base; int stacksize;S

4、tack;void InitStack(Stack &S) S.base=new intSTACK_INIT_MAXSIZE; if(!S.base)exit(0); S.stacksize=STACK_INIT_MAXSIZE; S.top=S.base; int n; cout请输入数据以0结束n&n!=0) *S.top+=n;void push(Stack &S,int e) if(S.top-S.base=S.stacksize) S.base=(int *)realloc(S.base,(S.stacksize+STACKINCREAMENT)*sizeof(int); if(!S

5、.base) exit(0); else S.top=S.base+S.stacksize; S.stacksize+=STACKINCREAMENT; *S.top+=e; void pop(Stack &S) if(S.top!=S.base) cout出栈元素为:*-S.topc=e; p-next=S.top; S.top=p; +S.length;bool pop3(Stack3 &S) if(!S.top) return false; else S.top=S.top-next; -S.length; return true; void PrintStack3(Stack3 &S)

6、 while(S.top) coutc ; pop3(S); void mainmenu() cout1.采用链式存储实现栈的初始化、入栈、出栈操作n; cout2.采用顺序存储实现栈的初始化、入栈、出栈操作n; cout3.设表达式以字符形式已存入数组En中,#为表达式的结束符,n; couti; if(i=1) couta&a!=0) push1(S1,a); PrintStack1(S1); coutendl; else if(i=2) InitStack(S2); pop(S2); int num; coutnum; push(S2,num); pop(S2); else cout请输

7、入表达式,以#结束:c&c!=#) if(c=(|c=) push3(S3,c); else flag=1; if(S3.length=0) cout不配对c=(&c=)|(S3.top-c=&c=) pop3(S3); else cout不配对n; return 0; if(flag=1&S3.length=0) cout配对endl; return 0;2. 队列的实现(1)采用链式存储实现队列的初始化、入队、出队操作。(2)采用顺序存储实现循环队列的初始化、入队、出队操作。 (3)在主函数中设计一个简单的菜单,分别测试上述算法。#include #include #define MAXQ

8、SIZE 100using namespace std;typedef struct QNode int data; struct QNode *next;QNode,*QueuePtr;typedef struct QueuePtr Front; QueuePtr Rear; int length;Queue;void InitQueue(Queue &Q) Q.Front=Q.Rear=new QNode; if(!Q.Front) exit(1); Q.Front-next=NULL; Q.length=0;void DestroyQueue(Queue &Q) while(Q.Front) Q.Rear=Q.Front-next; free(Q.Front); Q.Front=Q.Rear; void EnQueue(Queue &Q,int e) QueuePtr p; p=(QueuePtr )malloc(sizeof(QNode); if(!p) exit(1); p-

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 高等教育 > 大学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号