网站大量收购独家精品文档,联系QQ:2885784924

数据结构栈和队列C语言实现精选.doc

  1. 1、本文档共17页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
数据结构栈和队列C语言实现精选

数学与信息技术学院2016~2017(下)学年 计科专业2015级《数据结构》实验报告 4 学号:2015201018 姓名:汪继超 实验名称 栈的应用 完成时间 2017.05.03 一.实验目的和要求: 掌握栈和队列的概念及其两种数据结构的特点,懂得在什么样的问题中应用利用哪种结构。 熟练掌握在两种存储结构上实现栈的基本运算,特别注意栈满及栈空的条件及它们的描述方法。掌握两个顺序栈共享存储空间的概念。 熟练掌握循环队列和链队列的基本运算,特别注意队满和队空的描述方法。 加强编辑与调试C语言程序的能力。 二.实验原理 栈和队列是两种特殊的线性表。栈是限定只能在表的一端进行插入和删除的线性表,它又称为“后进先出”表;队列则是限定只能在表的一端进行插入,在表的另一端进行删除的线性表,它又称为“先进先出”表。由于栈和队列都是线性表的一种特例,所以它们都可以使用顺序存储结构和链式存储结构,栈的顺序存储结构称为顺序栈,栈的链式存储结构称为链栈;而队列的顺序存储结构称为顺序队列,队列的链式存储结构称为链队。顺序存储结构可用一维数组来实现,而链式存储结构可用指针来实现。 三.实验内容 假设称正读和反读都相同的字符序列为“回文”,试写一个算法判别读入的一个以”@”为结束符的字符序列是否是“回文”。 实验过程: /*注:此程序为栈的操作实现与应用*/ #includestdio.h #includestdlib.h #includeconio.h #includemalloc.h #includewindows.h #define STACK_INIT_SIZE 100 #define STACKINCREMENT 10 typedef int SElemType; typedef int QElemType; /*栈的存储结构*/ typedef struct{ SElemType *base; /*栈低指针*/ SElemType *top; /*栈顶指针*/ int stacksize; /*栈当前已分配的所有空间,不是已使用的空间长度*/ }SqStack; /*start***************队列的存储结构*********************/ typedef struct QNode{ QElemType data; struct QNode *next; }QNode,*QueuePtr; typedef struct{ QueuePtr front; QueuePtr rear; }LinkQueue; /****************队列的存储结构********************end*/ /*函数声明*/ SElemType GetTop(SqStack *S); void Push(SqStack *S,SElemType e); bool SEmpty(SqStack *S); SElemType Pop(SqStack *S); void main(); //括号匹配-------------------------------------------------------start void match(SqStack *S) { char str[20]; int i=0,flag; fflush(stdin); printf(\n Please enter a string: ); scanf(%s,str); while(str[i]!=\0flag!=0) { switch(str[i]) { case (: Push(S,(); break; case ): if(*(S-top-1)==() { flag=1; Pop(S); } else flag=0; break; case [: Push(S,[); break; case ]: if(*(S-top-1)==[) { flag=1; Pop(S); } else flag=0; break; case {: Push(S,{); break; case }: if(*(S-top-1)=={) { flag=1; Pop(S); } else flag=0; break; default :flag=0;break; } i++; } if((flag==1)(SEmpty(S)==0)) {

您可能关注的文档

文档评论(0)

pfenejiarz + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档