欢迎来到天天文库
浏览记录
ID:26853327
大小:65.06 KB
页数:7页
时间:2018-11-29
《栈的顺序和链式存储的表示和实现》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库。
1、实验三栈的顺序和链式存储的表示和实现实验目的:1.熟悉栈的特点(先进后出)及栈的基本操作,如入栈、出栈等。2.掌握栈的基本操作在栈的顺序存储结构和链式存储结构上的实现。实验内容:1.栈的顺序表示和实现编写一个程序实现顺序栈的各种基本运算,并在此基础上设计一个主程序,完成如下功能。(1)初始化顺序栈(2)插入一个元素(3)删除栈顶元素(4)取栈顶元素(5)便利顺序栈(6)置空顺序栈#include#include#defineMAXNUM20#defineelemtypeint//定义顺序栈的存储结构typedefstr
2、uct{elemtypestack[MAXNUM];inttop;}sqstack;//初始化顺序栈voidinitstack(sqstack*p){if(!p)printf("error");p->top=-1;}//入栈voidpush(sqstack*p,elemtypex){}//出栈elemtypepop(sqstack*p){}//获取栈顶元素elemtypegettop(sqstack*p){elemtypex;if(p->top!=-1){x=p->stack[p->top];returnx;}else{printf("Underflow!
3、");return0;}}//遍历顺序栈voidoutstack(sqstack*p){inti;printf("");if(p->top<0)printf("这是一个空栈!");for(i=p->top;i>=0;i--)printf("第%d个数据元素是:%6d",i,p->stack[i]);}//置空顺序栈voidsetempty(sqstack*p){}//主函数main(){sqstack*q;inty,cord;elemtypea;do{printf("第一次使用必须初始化!");printf("主菜单")
4、;printf("1初始化顺序栈");printf("2插入一个元素");printf("3删除栈顶元素");printf("4取栈顶元素");printf("5置空顺序栈");printf("6结束程序运行");printf("----------------------------------");printf("请输入您的选择(1,2,3,4,5,6)");scanf("%d",&cord);printf("");switch(cord){case1:{q=(sqstack*)malloc(
5、sizeof(sqstack));initstack(q);outstack(q);}break;case2:{printf("请输入要插入的数据元素:a=");scanf("%d",&a);push(q,a);outstack(q);}break;case3:{pop(q);outstack(q);}break;case4:{y=gettop(q);printf("栈顶元素为:%d",y);outstack(q);}break;case5:{setempty(q);printf("顺序栈被置空!");outstack(q);}break;
6、case6:exit(0);}}while(cord<=6);}1.栈的链式表示和实现编写一个程序实现链栈的各种基本运算,并在此基础上设计一个主程序,完成如下功能。(1)初始化链栈(2)入栈(3)出栈(4)取栈顶元素(5)置空链栈(6)遍历链栈参考代码:#include#include#include#definenull0typedefintelemtype;typedefstructstacknode{elemtypedata;stacknode*next;}stacknode;typedefs
7、truct{stacknode*top;}linkstack;//初始化链栈voidinitstack(linkstack*s){s->top=null;printf("已经初始化链栈!");}//链栈置空voidsetempty(linkstack*s){s->top=null;printf("链栈被置空!");}//入栈voidpushlstack(linkstack*s,elemtypex){}//出栈elemtypepoplstack(linkstack*s){}//取栈顶元素elemtypestacktop(linkstack*s
8、){if(s->top==0){printf("链栈空")
此文档下载收益归作者所有