2023考研计算机阜阳师范学院真题(4)
2022.06.23 13:12

  今天新东方在线考研频道小编为各位考生整理了“2023考研计算机阜阳师范学院真题(4)”,相关内容。专业、实用的计算机研究生真题备考内容,能使大家更有效率的掌握相关知识点,避免盲目学!更多计算机研究生真题精彩内容,时刻关注新东方在线考研频道!

  2023考研计算机阜阳师范学院真题(4)

  (1)将编号为0和1的两个栈存放于一个数组空间V[m]中,栈底分别处于数组的两端。当第0号栈的栈指针top[0]等于-1时该栈为空,当第1号栈的栈指针top[1]等于m时该栈为空。两个栈均从两端向中间增长。试编写双栈初始化,判断栈空、栈满、进栈和出栈等算法的函数。双栈数据结构的定义如下:

  Typedef struct

  {int top[2],bot[2]; //栈和栈底指针

  SElemType *V; //栈数组

  int m; //栈大可容纳元素个数

  }DblStack

  [题目分析]

  两栈共享向量空间,将两栈栈底设在向量两端,初始时,左栈指针为-1,右栈为m。两栈指针相邻时为栈满。两栈相向、迎面增长,栈指针指向栈元素。

  [算法描述]

  (1) 栈初始化

  int Init()

  {S.top[0]=-1;

  S.top[1]=m;

  return 1; //初始化

  }

  (2) 入栈操作:

  int push(stk S ,int i,int x)

  ∥i为栈号,i=0表示左栈,i=1为右栈,x是入栈元素。入栈返回1,失败返回0

  {if(i<0||i>1){ cout<<“栈号输入不对”<< p="">

  if(S.top[1]-S.top[0]==1) {cout<<“栈已满”<< p="">

  switch(i)

  {case 0: S.V[++S.top[0]]=x; return(1); break;

  case 1: S.V[--S.top[1]]=x; return(1);

  }

  }∥push

  (3) 退栈操作

  ElemType pop(stk S,int i)

  ∥退栈。i代表栈号,i=0时为左栈,i=1时为右栈。退栈时返回退栈元素

  ∥否则返回-1

  {if(i<0 i="">1){cout<<“栈号输入错误”<< p="">

  switch(i)

  {case 0: if(S.top[0]==-1) {cout<<“栈空”<< p="">

  else return(S.V[S.top[0]--]);

  case 1: if(S.top[1]==m { cout<<“栈空”<< p="">

  else return(S.V[S.top[1]++]);

  }∥switch

  }∥算法结束

  (4) 判断栈空

  int Empty();

  {return (S.top[0]==-1 && S.top[1]==m);

  }

  [算法讨论]

  请注意算法中两栈入栈和退栈时的栈指针的计算。左栈是通常意义下的栈,而右栈入栈操作时,其栈指针左移(减1),退栈时,栈指针右移(加1)。

  以上就是关于“2023考研计算机阜阳师范学院真题(4)”的内容,更多计算机研究生真题精彩内容,请持续关注新东方在线考研频道!


MORE+

    相关阅读 MORE+

    版权及免责声明
    1.凡本网注明"稿件来源:新东方在线"的所有文字、图片和音视频稿件,版权均属北京新东方迅程网络科技有限公司所有,任何媒体、网站或个人未经本网协议授权不得转载、链接、转贴或以其他方式复制发表。已经本网协议授权的媒体、网站,在下载使用时必须注明"稿件来源:新东方在线",违者本网将依法追究责任。
    2.本网末注明"稿件来源:新东方在线"的文/图等稿件均为转载稿,本网转载出于传递更多信息之目的,并不意味着赞同其观点或证实其内容的真实性。如其他媒体、网站或个人从本网下载使用,必须保留本网注明的"稿件来源",并自负版权等法律责任。如擅自篡改为"稿件来源:新东方在线”,本网将依法追究责任。
    3.如本网转载稿涉及版权等问题,请作者致信weisen@xdfzx.com,我们将及时外理

    Copyright © 2011-202

    All Rights Reserved