1 / 16
文档名称:

栈和队列的应用实验报告.docx

格式:docx   大小:20KB   页数:16页
下载后只包含 1 个 DOCX 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

栈和队列的应用实验报告.docx

上传人:qiang19840906 2019/2/22 文件大小:20 KB

下载得到文件列表

栈和队列的应用实验报告.docx

文档介绍

文档介绍:栈和队列的应用实验报告实验二栈和队列的基本操作一、实验目的 1、定义顺序栈的结点类型,掌握顺序栈插入和删除元素在操作上的特点。 2、定义链队列的结点类型,掌握链队列插入和删除元素在操作上的特点。 3、加深对栈和队列的理解,逐步培养解决实际问题的编程能力。二、实验环境运行C或VC++的微机。三、实验内容 1、试编写程序,在顺序存储结构下实现堆栈的下列运算: initstk(s)。初始化操作,建立一个空栈s; emptystk(s)。判定栈是否为空; pushstk(s)。如果栈s不满,在栈顶插入x; popstk(s)。如果栈s不空,删除栈顶元素,并返回该元素的值; getstk(s)。如果栈s不空,返回栈顶元素。 2、试编写程序,从键盘自主输入若干字符,构建一个链队列,并实现该队列元素入队和出队的操作。四、设计思路 ,依次达成以上功能,依次摆放功能函数,已达成以上功能 、链表 ,含有主函数、初始化函数、判断函数、插入函数、删除函数、返回函数、创建链栈函数、输出函数;链队列有7个函数,含有主函数、初始化函数、获取函数、入队函数、出队函数、销毁函数、显示函数。五、程序代码链栈#include #include #include #defineOK1 #defineERROR0 typedefstructNode//定义结构体{ intdata;//数据域 structNode*next;//指针域}Node,*LinkStack; intinitstk(LinkStack*s)//初始化操作,建立一个空栈s { *s=(LinkStack)malloc(sizeof(Node));//建立头结点,其next为空(*s)->next=NULL; returnOK; } intemptystk(LinkStack*s)//判定栈是否为空{ if((*s)->next==NULL) return1;//栈空返回1 else } voidpushstk(LinkStack*s,int*x)//如果栈s不满,在栈顶插入x { LinkStackp; if((p=(LinkStack)malloc(sizeof(Node)))==NULL) {return0;//非空返回0 printf("不能分配内存空间"); exit(0); } p->data=*x; p->next=(*s)->next; (*s)->next=p; } intpopstk(LinkStack*s,int*e)//如果栈s不空,删除栈顶元素,并返回该元素的值{ LinkStackp; if(emptystk(s))//栈空返回ERROR { printf("空栈无法实现出栈操作\n");returnERROR; } p=(*s)->next; *e=p->data; (*s)->next=p->next; free(p); p=NULL; returnOK; } voidgetstk(LinkStack*s,int*e)//如果栈s不空,返回栈顶元素{ *e=(*s)->next->data; } intcreatstk(LinkStack*s)//创建链栈,并输入元素{inta; intn; inti; if(initstk(s)!=1) { printf("分配空间失败,无法建立队列\n"); exit(ERROR); } printf("输入将建立链栈元素的个数:"); scanf("%d",&n); printf("请依次输入需要进栈的元素:\n"); for(i=1;inext; while(p!=NULL) { printf("%d\t",p->data); p=p->next; } } intmain() { inta,b,c,i; printf("**************欢迎使用!**************潘俊达\n");LinkStackStackTop; creatstk(&StackTop); printf("已经建立链栈s:\n"); printf("从栈顶到栈底依次为:\n"); printstk(StackTop); printf("\n进行进栈操作,输入需要进栈的元素:"); printf("\n"); scanf("%d",&a); pushstk(&StackTop,&a); printstk(StackTop); printf("\n"); printf("进行出栈操作\n"); popstk(&StackTop,&b); printf("被删除的元素为:%d\n",b); printstk(StackTop); printf("\n"); ge