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

數據結構考研分類復習真題 第三章 棧和隊列[14]

2013-11-15 15:19:37  來源: 數據結構 

   算術表達式求值的流程其中OPTR為算術符棧OPND為操作數棧precede(operoper)是比較運算符優先級別的函數operate(opndoperopnd)為兩操作數的運算結果函數(#表示運算起始和終止符號)【西北工業大學 (分)】

  FUNCTION  exp_reduced:operandtype;
  INITSTACK(OPTR);PUSH(OPTR#)INITSTACK(OPND);read(w)
  WHILE  NOT((w=#) AND (GETTOP(OPTR)=#)) DO
  IF NOT w in op THEN PUSH(OPNDw);
  ELSE CASE precede(GETTOP(OPTR)w)OF
  <:[()_______; read(w);]
  =:[()_______; read(w);];
  >:[theta:=POP(OPTR);b:=POP(OPND);a:=POP(OPND);()_______]
  ENDC;
  RETURN(GETTOP(OPND));
  ENDF;

  .根據需要用適當的語句填入下面算法的_______中【北京郵電大學 四(分)】

  問題設有n件物品重量分別為wwwwn和一個能裝載總重量為T的背包能否從n件物品中選擇若干件恰好使它們的重量之和等於T若能則背包問題有解否則無解解此問題的算法如下

  FUNCTION kanp_stack(VAR stackw:ARRAY[n] OF real; VAR top:integer; T:real):boolean; {w[n] 存放n件物品的重量依次從中取出物品放入背包中檢查背包重量若不超過T則裝入否則棄之取下一個物品試之若有解則返回函數值true否則返回false}
  BEGIN
  top:=;  i:=; {i指示待選物品}
  WHILE ()_______ AND()_______DO
  [IF ()______ OR ()_______ AND (i<n)
  THEN  [top := ()_______ ;stack[top] :=i; {第i件物品裝入背包}
  T:=Tw[i]];
  IF T= THEN RETURN (()_______) {背包問題有解}
  ELSE  [IF  (i=n )  AND  (top>)
  THEN  [i:=()_______; {取出棧頂物品}
  top:= ()_______ T:= ()_______ ]; {恢復T值}
  i:=i+ {准備挑選下一件物品}
  ];
  ];
  RETURN(()_______) {背包無解}
  END;

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


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