知识大全 数据结构考研分类复习真题 第三章 答案[15]

Posted 指针

篇首语:胸怀万里世界, 放眼无限未来。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 数据结构考研分类复习真题 第三章 答案[15]相关的知识,希望对你有一定的参考价值。

  五 算法设计题

   [题目分析]两栈共享向量空间 将两栈栈底设在向量两端 初始时 s 栈顶指针为 s 栈顶为maxsize 两栈顶指针相邻时为栈满 两栈顶相向 迎面增长 栈顶指针指向栈顶元素

  #define maxsize   两栈共享顺序存储空间所能达到的最多元素数  #define elemtp int       //假设元素类型为整型  typedef struct  elemtp stack[maxsize];  //栈空间  int top[ ];             //top为两个栈顶指针  stk;  stk s;                   //s是如上定义的结构类型变量 为全局变量

  ( )入栈操作

  int push(int i int x)  //入栈操作 i为栈号 i= 表示左边的栈s i= 表示右边的栈s x是入栈元素 入栈成功返回 否则返回   if(i< ||i> )printf( 栈号输入不对 );exit( );  if(s top[ ] s top[ ]== ) printf( 栈已满\\n );return( );  switch(i)  case : s stack[++s top[ ]]=x; return( ); break;  case : s stack[ s top[ ]]=x; return( );    //push

  ( ) 退栈操作

  elemtp pop(int i)  //退栈算法 i代表栈号 i= 时为s 栈 i= 时为s 栈 退栈成功返回退栈元素 否则返回   if(i< || i> )printf( 栈号输入错误\\n ) exit( );  switch(i)  case : if(s top[ ]== ) printf( 栈空\\n ) return( )   else return(s stack[s top[ ] ]);  case : if(s top[ ]==maxsize printf( 栈空\\n ); return( );  else return(s stack[s top[ ]++]);    //算法结束

  [算法讨论] 请注意算法中两栈入栈和退栈时的栈顶指针的计算 两栈共享空间示意图略 s 栈是通常意义下的栈 而s 栈入栈操作时 其栈顶指针左移(减 ) 退栈时 栈顶指针右移(加 )

cha138/Article/program/sjjg/201311/22708

相关参考