(zhn)现在的位置Q?/strong> 跨考网频道考研报名正文

数据l构W三章设计题?qing)参考答案[6]_跨考网

最后更新时_(d)(x)2011-11-18 13:39:05
辅导评Q?a target="_blank" rel="nofollow">暑期集训 在线咨询
复习(fn)紧张Q焦头烂额?逆风轻袭Q来跨考秋季集训营Q帮你寻Ҏ(gu)Q定Ҏ(gu)Q?/span> ?jin)解一?>

 (tng) (tng) (tng) (tng) (tng) (tng)  (tng)1. 请利用两个栈S1?/span>S2来模拟一个队列。已知栈的三个运定义如下:(x)PUSH(ST,x):元素x?/span>ST栈;POP(ST,x)Q?/span>ST栈顶元素出栈Q赋l变?/span>xQ?/span>Sempty(ST)Q判ST栈是否ؓ(f)I。那么如何利用栈的运来实现该队列的三个q算Q?/span>enqueue:插入一个元素入队列Q?/span> dequeue:删除一个元素出队列Q?/span>queue_emptyQ判队列为空。(请写明算法的思想?qing)必要的注释Q?a target="_blank">西安?sh)子U技大学2001软g?/span>(10?/span>)】?a target="_blank">上v交通大?/a>1999 ?/span>(12?/span>)】?a target="_blank">xv大学1998 ?/span>(12?/span>)?/span>

  cM本题的另外叙q有Q?/span>

  有两个长度相同的?/span>S1,S2Q已知以下入栈、出栈、判栈满和判栈空操作Q?/span>

  PROCEDURE push(Stack:Stacktype;x:Datatype);

  FUNCTION Pop(Stack:Stacktype ):Datatype;

  FUNCTION Full (Stack:Stacktype):Boolean;

  FUNCTION Empty(Stack:Stacktype)Boolean;

  现用此二栈构成一个队列,试写Z面入队列、出队列操作法Q?/span>

  PROCEDURE EnQueue(x:Datatype);

  FUNCTION DeQueue: Datatype;?a target="_blank">北京邮电(sh)大学 2000 六(10分)(j)?/span>

  【参考答案?/span>

  [题目分析]栈的特点是后q先出,队列的特Ҏ(gu)先进先出。所以,用两个栈s1?/span>s2模拟一个队列时Q?/span>s1作输入栈Q逐个元素压栈Q以此模拟队列元素的入队。当需要出队时Q将?/span>s1退栈ƈ逐个压入?/span>s2中,s1中最先入栈的元素Q在s2中处于栈?/span>s2退栈,相当于队列的出队Q实C(jin)先进先出。显?dng)只有?/span>s2为空?/span>s1也ؓ(f)I,才算是队列空?/span>

  (1) int enqueue(stack s1,elemtp x)

  //s1是容量ؓ(f)n的栈Q栈中元素类型是elemtp。本法?/span>x入栈Q若入栈成功q回1Q否则返?/span>0?/span>

  {if(top1==n && !Sempty(s2)) //top1是栈s1的栈指针,是全局变量?/span>

  {printf(“栈满?/span>);return(0);} //s1?/span>s2非空,q时s1不能再入栈?/span>

  if(top1==n && Sempty(s2)) //?/span>s2为空Q先?/span>s1退?/span>,元素再压栈到s2?/span>

  {while(!Sempty(s1)) {POP(s1,x);PUSH(s2,x);}

  PUSH(s1,x); return(1); //x入栈Q实C(jin)队列元素的入队?/span>

  }

  (2) void dequeue(stack s2,s1)

  //s2是输出栈Q本法?/span>s2栈顶元素退栈,实现队列元素的出队?/span>

  {if(!Sempty(s2)) //?/span>s2不空Q则直接出队?/span>

  {POP(s2,x); printf(“出队元素ؓ(f)?/span>,x); }

  else //处理s2I栈?/span>

  if(Sempty(s1)) {printf(“队列空?/span>);exit(0);}//若输入栈也ؓ(f)I,则判定队I?/span>

  else //先将?/span>s1倒入s2中,再作出队操作?/span>

  {while(!Sempty(s1)) {POP(s1,x);PUSH(s2,x);}

  POP(s2,x); //s2退栈相当队列出队?/span>

  printf(“出队元素”,x);

  }

  }//l束法dequue?/span>

  (3) int queue_empty()

  //本算法判用栈s1?/span>s2模拟的队列是否ؓ(f)I?/span>

  {if(Sempty(s1)&&Sempty(s2)) return(1);//队列I?/span>

  else return(0); //队列不空?/span>

  }

  [法讨论]法中假定栈s1和栈s2定w相同。出队从?/span>s2出,?/span>s2为空Ӟ?/span>s1不空Q则?/span>s1倒入s2再出栈。入队在s1Q当s1满后Q若s2I,则将s1倒入s2Q之后再入队。因此队列的定wZ栈容量之和。元素从?/span>s1倒入s2Q必ds2I的情况下才能进行,卛_要求出队操作Ӟ?/span>s2I,则不?/span>s1元素多少Q只要不I)(j)Q就要全部倒入s2中?/span>

  cM本题叙述的其它题的解{:(x)

  该题同上面题本质相同Q只有叙qC同,请参考上题答案?/font>

跨考考研评

班型 定向班型 开班时?/td> 高定?/td> 标准?/td> 评介绍 咨询
U季集训 冲刺?/td> 9.10-12.20 168000 24800?/td> 班面授+专业??+专业译֮向辅?协议加强评(高定?+专属规划{疑(高定?+_化答?复试资源(高定?+复试译֌(高定?+复试指导(高定?+复试班主?v1服务(高定?+复试面授密训(高定?+复试1v1(高定?
2023集训畅学 非定向(政英?数政qQ?/td> 每月20?/td> 22800?协议? 13800?/td> 先行阶在U课E?基础阶在U课E?强化阶在U课E?真题阶在U课E?冲刺阶在U课E?专业NҎ(gu)一对一评+班主dE督学服?全程规划体系+全程试体系+全程_化答?择校择专业能力定位体p?全年关键环节指导体系+初试加强?初试专属服务+复试全科标准班服?/td>

①凡本网注明“稿件来源:(x)跨考网”的所有文字、图片和韌频稿Ӟ版权均属北京学博教育咨询有限公司Q含本网和跨考网Q所有,M媒体、网站或个h未经本网协议授权不得转蝲、链接、{帖或以其他Q何方式复制、发表。已l本|协议授权的媒体、网站,在下载用时必须注明“稿件来源,跨考网”,q者本|将依法q究法律责Q?/p>

②本|未注明“稿件来源:(x)跨考网”的?囄Eg均ؓ(f)转蝲E,本网转蝲仅基于传递更多信息之目的Qƈ不意味着再通{载稿的观Ҏ(gu)证实其内容的真实性。如其他媒体、网站或个h从本|下载用,必须保留本网注明的“稿件来源”,q自负版权等法律责Q。如擅自改为“稿件来源:(x)跨考网”,本网依法追I法律责仅R?/p>

③如本网转蝲E涉?qing)版权等问题Q请作者见E后在两周内速来?sh)与跨考网联系Q电(sh)话:(x)400-883-2220