天堂888-欧美黄色小说-熟睡侵犯の奶水授乳在线-初尝情欲h名器av-亚洲天堂免费视频-日韩五十路-免费在线国产-国产又大又黄又粗-久草导航-色播导航-亚洲免费资源-熟女一区二区三区视频-亚洲美女视频在线-亚洲成人福利视频-婷婷精品在线-亚洲综合p-中文字幕 日本-亚洲骚片-亚洲自拍偷拍网-国产农村妇女精品一区二区-午夜中出-久久精品国产精品亚洲毛片-91精品毛片-99爱视频在线-狠狠操亚洲-美女让人操-里番本子纯肉侵犯肉全彩无码-999偷拍

2009年上半年軟考軟件設計師下午試卷[9]

軟件設計師 責任編輯:iorilzc 2009-05-24

添加老師微信

備考咨詢

加我微信

摘要:試題五(共15分)閱讀下列說明和C函數代碼,將應填入(n)處的字句寫在答題紙的對應欄內。【說明】對二叉樹進行遍歷是二叉樹的一個基本運算。遍歷是指按某種策略訪問二叉樹的每個結點,且每個結點僅訪問一次的過程。函數InOrder()借助棧實現二叉樹的非遞歸中序遍歷運算。設二叉樹采用二叉鏈表存儲,結點類型定義如下:

  試題五(共 15 分)

  閱讀下列說明和C 函數代碼,將應填入 (n) 處的字句寫在答題紙的對應欄內。

  【說明】

  對二叉樹進行遍歷是二叉樹的一個基本運算。遍歷是指按某種策略訪問二叉樹的每個結點,且每個結點僅訪問一次的過程。函數InOrder()借助棧實現二叉樹的非遞歸中序遍歷運算。

  設二叉樹采用二叉鏈表存儲,結點類型定義如下:

  typedef struct BtNode{
  ElemType  data;  /*結點的數據域,ElemType的具體定義省略*/
  struct BtNode *lchild,*rchild;  /*結點的左、右孩子指針域*/
  }BtNode, *BTree;
  在函數InOrder()中,用棧暫存二叉樹中各個結點的指針,并將棧表示為不含頭結點
  的單向鏈表(簡稱鏈棧),其結點類型定義如下:
  typedef struct StNode{  /*鏈棧的結點類型*/
  BTree elem;  /*棧中的元素是指向二叉鏈表結點的指針*/
  struct StNode *link;
  }StNode;

  假設從棧頂到棧底的元素為 en、en-1、…、e1,則不含頭結點的鏈棧示意圖如圖5-1所示。

  【C函數】

  int  InOrder(BTree root)  /* 實現二叉樹的非遞歸中序遍歷  */
  {
  BTree ptr; /* ptr用于指向二叉樹中的結點  */
  StNode *q;  /* q暫存鏈棧中新創建或待刪除的結點指針*/
  StNode *stacktop = NULL;  /* 初始化空棧的棧頂指針stacktop */
  ptr = root;  /* ptr指向二叉樹的根結點  */
  while ( (1)  || stacktop != NULL) {
  while (ptr != NULL) {
  q = (StNode *)malloc(sizeof(StNode));
  if (q == NULL)
  return -1;
  q->elem = ptr;
  (2)  ;
  stacktop = q;  /*stacktop指向新的棧頂*/
  ptr = (3)  ; /*進入左子樹*/
  }
  q = stacktop;
  (4)  ;  /*棧頂元素出棧*/
  visit(q);  /*visit是訪問結點的函數,其具體定義省略*/
  ptr = (5)  ;  /*進入右子樹*/
  free(q);  /*釋放原棧頂元素的結點空間*/
  }
  return 0;
  }/*InOrder*/ 
  [答案討論]

[1]  [2]  [3]  [4]  [5]  [6]  [7]  [8]  [9]  [10]  [11]  

更多資料
更多課程
更多真題
溫馨提示:因考試政策、內容不斷變化與調整,本網站提供的以上信息僅供參考,如有異議,請考生以權威部門公布的內容為準!

軟考備考資料免費領取

去領取

!
咨詢在線老師!