欢迎来到天天文库
浏览记录
ID:9453349
大小:153.50 KB
页数:13页
时间:2018-05-01
《用链表实现栈和队列》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、数据结构与算法分析实验二·实验报告姓名:XXXXXXXXXX学号:XXXXXXXXXX班级:CCCCCCCCCCXXXXXXXXXXX数据结构实验报告·实验二CCCCCCCCCCCCCC实验二(1)用链表实现栈一、实验描述用链表实现一个栈。二、实验设计1.进栈(PUSH)算法 ①若TOP≥n时,则给出溢出信息,作出错处理(进栈前首先检查栈是否已满,满则溢出;不满则作②); ②置TOP=TOP+1(栈指针加1,指向进栈地址); ③S(TOP)=X,结束(X为新进栈的元素); 2.退栈(POP)算法 ①若TOP≤0,则给出下溢信息,作出错处理(退栈前先检查是否已为空栈,空则下溢;
2、不空则作②); ②X=S(TOP),(退栈后的元素赋给X): ③TOP=TOP-1,结束(栈指针减1,指向栈顶)。三、实验实现代码#include#include#defineDataTypeint#defineMAXSIZE1024typedefstruct{DataTypedata[MAXSIZE];inttop;}SeqStack;//栈初始化 SeqStack*Init_SeqStack(){XXXXXXXXXXX数据结构实验报告·实验二CCCCCCCCCCCCCCSeqStack*s;s=(SeqStack*)malloc(size
3、of(SeqStack));if(!s){printf("空间不足");returnNULL;}else{s->top=-1;returns;}}//判栈空intEmpty_SeqStack(SeqStack*s){if(s->top==-1)return1;elsereturn0;}//入栈intPush_SeqStack(SeqStack*s,DataTypex){if(s->top==MAXSIZE-1)return0;//栈满不能入栈else{s->top++;s->data[s->top]=x;return1;}}XXXXXXXXXXX数据结构实验报告·实验二CCCCCC
4、CCCCCCCC//出栈intPop_SeqStack(SeqStack*s,DataType*x){if(Empty_SeqStack(s))return0;//栈空不能出栈else{*x=s->data[s->top];s->top--;return1;}//栈顶元素存入*x,返回}//取栈顶元素DataTypeTop_SeqStack(SeqStack*s){if(Empty_SeqStack(s))return0;//栈空elsereturns->data[s->top];}intPrint_SeqStack(SeqStack*s){inti;printf("当前栈中的元素:
5、n");for(i=s->top;i>=0;i--)printf("%3d",s->data[i]);printf("");return0;}XXXXXXXXXXX数据结构实验报告·实验二CCCCCCCCCCCCCCintmain(){SeqStack*L;intn,num,m;inti;L=Init_SeqStack();printf("初始化完成");printf("栈空:%d",Empty_SeqStack(L));printf("请输入入栈元素个数:");scanf("%d",&n);printf("请输入要入栈的%d个元素:",n);for(i=0;i6、;i++){scanf("%d",&num);Push_SeqStack(L,num);}Print_SeqStack(L);printf("栈顶元素:%d",Top_SeqStack(L));printf("请输入要出栈的元素个数(不能超过%d个):",n);scanf("%d",&n);printf("依次出栈的%d个元素:",n);for(i=0;i7、return0;}XXXXXXXXXXX数据结构实验报告·实验二CCCCCCCCCCCCCC二、实验结果XXXXXXXXXXX数据结构实验报告·实验二CCCCCCCCCCCCCC实验二(2)用链表实现队列一、实验描述用链表实现一个队列。二、实验设计队列是一种特殊的线性表,它只允许在表的前端(front)进行删除操作,而在表的后端(rear)进行插入操作。进行插入操作的端称为队尾,进行删除操作的端称为队头。队列中没有元素时,称为空队列。在队列这种
6、;i++){scanf("%d",&num);Push_SeqStack(L,num);}Print_SeqStack(L);printf("栈顶元素:%d",Top_SeqStack(L));printf("请输入要出栈的元素个数(不能超过%d个):",n);scanf("%d",&n);printf("依次出栈的%d个元素:",n);for(i=0;i7、return0;}XXXXXXXXXXX数据结构实验报告·实验二CCCCCCCCCCCCCC二、实验结果XXXXXXXXXXX数据结构实验报告·实验二CCCCCCCCCCCCCC实验二(2)用链表实现队列一、实验描述用链表实现一个队列。二、实验设计队列是一种特殊的线性表,它只允许在表的前端(front)进行删除操作,而在表的后端(rear)进行插入操作。进行插入操作的端称为队尾,进行删除操作的端称为队头。队列中没有元素时,称为空队列。在队列这种
7、return0;}XXXXXXXXXXX数据结构实验报告·实验二CCCCCCCCCCCCCC二、实验结果XXXXXXXXXXX数据结构实验报告·实验二CCCCCCCCCCCCCC实验二(2)用链表实现队列一、实验描述用链表实现一个队列。二、实验设计队列是一种特殊的线性表,它只允许在表的前端(front)进行删除操作,而在表的后端(rear)进行插入操作。进行插入操作的端称为队尾,进行删除操作的端称为队头。队列中没有元素时,称为空队列。在队列这种
此文档下载收益归作者所有