数据结构栈和队列实验报告_2.docVIP

  1. 1、本文档共8页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
实验二 栈和队列的基本操作 实验目的 定义顺序栈的结点类型,掌握顺序栈插入和删除元素在操作上的特点。 定义链队列的结点类型,掌握链队列插入和删除元素在操作上的特点。 加深对栈和队列的理解,逐步培养解决实际问题的编程能力。 实验环境 运行C或VC++的微机。 实验内容 1、试编写程序,在顺序存储结构下实现堆栈的下列运算: (1)initstk(s)。初始化操作,建立一个空栈s; (2)emptystk(s)。判定栈是否为空; (3)pushstk(s)。如果栈s不满,在栈顶插入x; (4)popstk(s)。如果栈s不空,删除栈顶元素,并返回该元素的值; (5)getstk(s)。如果栈s不空,返回栈顶元素。 2、 试编写程序,从键盘自主输入若干字符,构建一个链队列,并实现该队列元素入队和出队的操作。 设计思路 这道题我打算按顺序结构做下去,依次达成以上功能,依次摆放功能函数,已达成以上功能 链栈与链队列均有采用动态数组、链表 链栈有8个函数,含有主函数、初始化函数、判断函数、插入函数、删除函数、返回函数、创建链栈函数、输出函数;链队列有7个函数,含有主函数、初始化函数、获取函数、入队函数、出队函数、销毁函数、显示函数。 程序代码 链栈 #include stdio.h #include malloc.h #includestdlib.h #define OK 1 #define ERROR 0 typedef struct Node //定义结构体 { int data; //数据域 struct Node *next; //指针域 }Node,*LinkStack; int initstk(LinkStack *s)//初始化操作,建立一个空栈s { *s=(LinkStack)malloc(sizeof(Node));//建立头结点,其next为空 (*s)-next=NULL; return OK; } int emptystk(LinkStack *s)//判定栈是否为空 { if ((*s)-next==NULL) return 1;//栈空返回1 else return 0;//非空返回0 } void pushstk(LinkStack *s,int *x)//如果栈s不满,在栈顶插入x { LinkStack p; if((p=(LinkStack)malloc(sizeof(Node)))==NULL) { printf(不能分配内存空间); exit(0); } p-data=*x; p-next=(*s)-next; (*s)-next=p; } int popstk(LinkStack *s,int *e)//如果栈s不空,删除栈顶元素,并返回该元素的值 { LinkStack p; if(emptystk(s)) //栈空返回ERROR { printf(空栈无法实现出栈操作\n); return ERROR; } p=(*s)-next; *e = p-data; (*s)-next = p-next; free(p); p=NULL; return OK; } void getstk(LinkStack *s,int *e)//如果栈s不空,返回栈顶元素 { *e=(*s)-next-data; } int creatstk(LinkStack *s)//创建链栈,并输入元素 { int a; int n; int i; if(initstk(s)!=1) { printf(分配空间失败,无法建立队列\n); exit(ERROR); } printf(输入将建立链栈元素的个数:); scanf(%d,n); printf(请依次输入需要进栈的元素:\n); for(i=1;i=n;i++) {printf(链队列第%d个元素的值为:,i); scanf(%d,a); pushstk(s,a);} return OK; } void printstk(LinkStack S)//输出队列元素 { Node *p; p=S-next; while(p!= NULL) { printf(%d\t,p-data); p=p-next; } } int main () { int a,b,c,i; printf(**************欢迎使用!**************潘俊达

您可能关注的文档

文档评论(0)

186****7928 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档