数据结构实验报告 班 级: 计 学 号: 姓 名: 设计日期: 西安计算机学院 实验题目 1)栈的顺序存储结构 2)栈的链式存储结构 3)队列的链式存储结构 4)队列的循环存储结构 2 .需求分析 本演示程序用C 语言编写,完成栈和列的初始化,入栈、出栈、输出操作。 1)对于顺序栈,入栈时要先判断栈是否满了,栈满不能入栈,否则出现空间溢出;在进栈出栈和读取栈顶时先判栈是否为空,为空时不能操作。 2)在一个链队表中需设定两个指针分别指向队列的头和尾。 3)队列的存储结构:注意要判断队满和队空。 4)程序所能达到的功能:完成栈的初始化,入栈,出栈和输出操作;完成队列的初始化,入队列,出队列和输出操作。 3 .概要设计 本程序包含 1、栈的顺序存储结构包含的函数: 1)主函数 main() 2)入栈函数 Push() 3)出栈函数 Pop() 2、栈的链式存储结构包含的函数: 1)主函数 main() 2)入栈函数 PushStack() 3)退栈函数 PopStack() 4)取栈顶元素函数 Getstack top() 3 、队列的链式存储结构所包含的函数: 1)主函数 main() 2)入队函数 EnQueue() 3)出队函数 DeQueue() 4 队列的循环所包含的函数: 1)主函数 main() 2)初始化循环函数 CircSeqQueue() 3)入队函数 EnQueue() 4)出队函数 DeQueue() 5)取队首元素函数 GetFront() 4 .详细设计 1)栈的顺序存储结构 #include #include #include #define MAXSIZE 20 typedef int datatype; typedef struct { datatype elem[MAXSIZE]; int top; }SeqStack; int init(SeqStack *s) { s->top=-1; return 1;} void print(SeqStack *s) {char ch; int i; if(s->top==-1)printf("\n 栈已空."); else{i=s->top; while(i!=-1){printf("\n data=%d",s->elem[i]); i--;} } printf("\n 按回车继续");ch=getch(); } void push(SeqStack *s,datatype x) {if(s->top==MAXSIZE-1) printf("\n 栈已满!"); else s->elem[++s->top]=x; } datatype pop(SeqStack*s) {datatype x; if(s->top==-1){printf("\n 栈已空! "); x=-1;} else{x=s->elem[s->top--];} return(x); } void main() {SeqStack s; int k; datatype x; if(init(&s)) {do {printf("\n\n\n"); printf("\n**********************************...