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

栈和队列的基本操作的实现.doc

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

封面: 安徽大学 网络工程 栈和队列的基本操作的实现 ______2010\4\12 【实验目的】 理解并掌握栈和队列的逻辑结构和存储结构; 理解栈和队列的相关基本运算; 编程对相关算法进行验证。 【实验内容】 (一)分别在顺序和链式存储结构上实现栈的以下操作(含初始化,入栈,出栈,取栈顶元素等): 构造一个栈S,将构造好的栈输出; 在第1步所构造的栈S中将元素e 入栈,并将更新后的栈S输出; 在第2步更新后所得到的栈S中将栈顶元素出栈,用变量e返回该元素,并将更新后的栈S输出。 (二)分别在链队列和循环队列上实现以下操作(初始化,入队,出队,取队头元素等): 1.构造一个队列Q,将构造好的队列输出; 2.在第1步所构造的队列Q中将元素e入队,并将更新后的队列Q输出; 3.在第2步更新后所得到的队列Q中将队头元素出队,用变量e返回该元素,并将更新后的队列Q输出。 【要求】 栈和队列中的元素要从终端输入; 具体的输入和输出格式不限; 算法要具有较好的健壮性,对运行过程中的错误操作要做适当处理。 三、实验步骤 1.本实验用到的数据结构 (1)逻辑结构:线性结构 (2)存储结构:程序一、四(顺序存储结构); 程序二、三(链式存储结构); 2.各程序的功能和算法设计思想 程序一:顺序栈 # include stdio.h # include malloc.h # include process.h #define STACKINITISIZE 100 # define STACKINCREMENT 10 # define OK 1 # define ERROR 0 # define OVERFLOW -2 typedef int SElemtype; typedef int status; typedef struct { SElemtype *base; SElemtype *top; int stacksize; }sqstack; void Initstack (sqstack *s) { (*s).base = (SElemtype *)malloc(STACKINITISIZE * sizeof (SElemtype)); if(!(*s).base) exit(OVERFLOW); (*s).top = (*s).base; (*s).stacksize = STACKINITISIZE; } void push ( sqstack *s , SElemtype e ){ if ((*s).top - (*s).base =(*s).stacksize){ (*s).base = (SElemtype *) realloc ((*s).base,((*s).stacksize + STACKINCREMENT) * sizeof (SElemtype )); if ( ! (*s).base ) exit (OVERFLOW); (*s).top = (*s).base +(*s).stacksize ; (*s).stacksize += STACKINCREMENT; } *(*s).top ++ = e; } status Gettop (sqstack s ) { int e; if (s.top ==s.base ) return ERROR; e=*(s.top-1); printf (栈顶元素是%d\n,e); return OK; } status pop ( sqstack *s ) { int f; if ( (*s).top==(*s).base) return ERROR; f = *(--(*s).top); printf(出栈元素是%d\n,f); return OK; } void stackTraverse(sqstack s ){ SElemtype * p =s.base; while (s.topp) printf (%d ,*p++); printf(\n); } void main(){ int h,k,e,i; sqstack la; printf (构建一个空栈\n); Initstack (la); printf(请输入栈内元素的个数\n); scanf (%d,k); printf(请输入%d个元素\n,k); for (i=0;ik;i++){ scanf (%d,e); push (la,e); } print

文档评论(0)

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

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

1亿VIP精品文档

相关文档