资源描述:
《实验报告一--链接栈与顺序队列的基本运算》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库。
1、课程实验报告题目链接栈与顺序队列的基本运算班级2010信息与计算科学班姓名笑嘻嘻小学号笑嘻嘻完成日期笑嘻嘻小(-)实验要求:编程实现链接栈与顺序队列的基本运算。链接栈:插入元素,删除栈顶元素,读出栈顶元素,判断栈是否为空。顺序队列:队列的插入,队列的删除,读队头元素,判断队列是否为空。实验目的:熟练掌握链接栈,顺序队列的基本运算。链接栈的结点结构与单链表的结点结构完全相同,即,将链接栈组织成单链表形式。注意,链接栈中指针的方向是从栈顶指向栈底。顺序队列是用顺序存储方法存储的队列。分配一片连续的存储空间,存放队列中的表目,并用两个变量分别指向队头和队尾。㈡I.链接栈的基本运算I.1实验代码:#i
2、nclude#include#defineLENsizeof(structnode)^defineNULL0structnode{intinfo;structnode*!ink;};structlinklist{structnodc*T;};//*主函数*//voidmain(){intx;structlinklistL;I,.T=(structnode*)mal1oc(I.EN);L.T二NULL;structlinklistpush(structlinklistL,intx);structlinklistpop(structlinklistL);int
3、top(structlinklistL);intsempty(structlinklistL);/*函数声明*/for(x=10;x<=50;x=x+10)L=push(L,x);/*向栈顶插入五个元素10,20,30,40,50*/printfC'向栈顶插入五个元素后,n);printf(”栈顶元素为%(10”,L.T-〉info);for(x二1;x<=3;x++)L=pop(L);printf(n连续删除链接栈3个元素后,n);printfC栈顶元素为%d。",L.T->info);x=top(L);printf(”读出的栈顶元素为%(1。”,x);if(sempty(L))
4、printf(”调用sempty(L)函数,栈已空。");elseprintf("调用sempty(L)函数,栈不空。");}/*栈的插入函数*/structlinklistpush(structlinklistL,intx){structnode*p;p=(structnode*)malloc(LEN);p->info=x;p->link=L.T;L.T=p;return(L);}/*栈的删除函数*/structlinklistpop(structlinklistL){structnode*p;if(L.T=NULL)printf(’f栈空。’f);else{p二L.T;L.T=
5、L.T-〉link;free(p);}return(L);}/*读出栈顶元素*/inttop(structlinklistL){if(L.T==NULL){printf(n栈空。");return0;}elsereturn(L.T-〉info);}/*判断栈是否为空*/intsempty(structlinklistL){if(L.T==NULL)return(1);elsereturn(0);}1.2实验结果:I.3调试过程及其分析①T始终指向的是栈顶元素,因此,T总是指向新插入的结点。②在进行栈的删除,读栈顶元素,判断栈是否为空运算时,首先要判断栈是否为空。TT.顺序队列的基本运算II
6、.1实验代码:#includettdefinemO20structqueue{intq[mO+l];intf,r;};//*主函数*//intmain(){structqueuequ,*p;intx;p=&qu;qu.f=l;qu.r=l;voidenq(structqueue*p,intx);voiddcq(structqucuc*p);intfront(structqueuequ);intqempty(structqueuequ);/*函数声明氺/for(x:10;x〈=50;x二x+10)enq(p,x);printf('f向顺序队列依次插入5个元素后,n);print
7、f(’f队头元素为%d,队尾元素为%d。",qu.q[qu.f],qu.q[qu.r-1]);for(x=l;x<=3;x++)deq(p);printf(n连续删除顺序队列的3个元素后,n);printf("队头元素为%(1,队尾元素为%d。M,qu.q[qu.f],qu.q[qu.r-1]);x=front(qu);printf(”读出的队头元素为%01。”,x);if(qempt