熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> 數據結構 >> 正文

數據結構考研分類復習真題 第三章 答案[15]

2013-11-15 15:00:42  來源: 數據結構 

  五算法設計題

  [題目分析]兩棧共享向量空間將兩棧棧底設在向量兩端初始時s棧頂指針為s棧頂為maxsize兩棧頂指針相鄰時為棧滿兩棧頂相向迎面增長棧頂指針指向棧頂元素

  #define maxsize   兩棧共享順序存儲空間所能達到的最多元素數
  #define elemtp int       //假設元素類型為整型
  typedef struct
  {elemtp stack[maxsize];  //棧空間
  int top[];             //top為兩個棧頂指針
  }stk;
  stk s;                   //s是如上定義的結構類型變量為全局變量

  ()入棧操作

  int push(int iint x)
  //入棧操作i為棧號i=表示左邊的棧si=表示右邊的棧sx是入棧元素入棧成功返回否則返回
  {if(i<||i>){printf(棧號輸入不對);exit();}
  if(stop[]stop[]==) {printf(棧已滿\n);return();}
  switch(i)
  {case : sstack[++stop[]]=x; return(); break;
  case : sstack[stop[]]=x; return();
  }
  }//push

  () 退棧操作

  elemtp pop(int i)
  //退棧算法i代表棧號i=時為si=時為s退棧成功返回退棧元素否則返回
  {if(i< || i>){printf(棧號輸入錯誤\n)exit();}
  switch(i)
  {case : if(stop[]==) {printf(棧空\n)return(}
  else return(sstack[stop[]]);
  case : if(stop[]==maxsize {printf(棧空\n); return();}
  else return(sstack[stop[]++]);
  }
  }//算法結束

  [算法討論] 請注意算法中兩棧入棧和退棧時的棧頂指針的計算兩棧共享空間示意圖略s棧是通常意義下的棧而s棧入棧操作時其棧頂指針左移(減退棧時棧頂指針右移(加

[]  []  []  []  []  []  []  []  []  []  []  []  []  []  []  []  []  []  []  []  []  []  []  []  []  []  []  []  []  


From:http://tw.wingwit.com/Article/program/sjjg/201311/22708.html
    推薦文章
    Copyright © 2005-2013 電腦知識網 Computer Knowledge   All rights reserved.