1、假設以i和o分別表示入棧和出棧操作。棧的初態和終態均為空,入棧和出棧的操作序列可表示為僅由i和o組成的序列,稱可以操作的序列為合法序列,否則稱為非法序列。(15分)
(1)a和d是合法序列,b和c 是非法序列。
(2)設被判定的操作序列已存入一維陣列a中。
int judge(char a)
判斷字元陣列a中的輸入輸出序列是否是合法序列。如是,返回true,否則返回false。
i++; //不論a[i]是『i』或『o』,指標i均後移。}
if(j!=k)
else
演算法結束。
2、若第n件物品能放入揹包,則問題變為能否再從n-1件物品中選出若干件放入揹包(這時揹包可放入物品的重量變為s-w[n])。若第n件物品不能放入揹包,則考慮從n-1件物品選若干件放入揹包(這時揹包可放入物品仍為s)。若最終s=0,則有一解;否則,若s<0或雖然s>0但物品數n<1,則無解。
(1)s-w[n],n-1 //knap(s-w[n],n-1)=true
(2)s,n-1knap←knap(s,n-1)
3、設有乙個陣列中存放了乙個無序的關鍵序列k1、k2、…、kn。現要求將kn放在將元素排序後的正確位置上,試編寫實現該功能的演算法,要求比較關鍵字的次數不超過n。
51. 借助於快速排序的演算法思想,在一組無序的記錄中查詢給定關鍵字值等於key的記錄。設此組記錄存放於陣列r[l..
h]中。若查詢成功,則輸出該記錄在r陣列中的位置及其值,否則顯示「not find」資訊。請編寫出演算法並簡要說明演算法思想。
4、對一般二叉樹,僅根據乙個先序、中序、後序遍歷,不能確定另乙個遍歷序列。但對於滿二叉樹,任一結點的左右子樹均含有數量相等的結點,根據此性質,可將任一遍歷序列轉為另一遍歷序列(即任一遍歷序列均可確定一棵二叉樹)。
void pretopost(elemtype pre ,post,int l1,h1,l2,h2)
//將滿二叉樹的先序序列轉為後序序列,l1,h1,l2,h2是序列初始和最後結點的下標。
}//pretopost
32. .葉子結點只有在遍歷中才能知道,這裡使用中序遞迴遍歷。
設定前驅結點指標pre,初始為空。第乙個葉子結點由指標head指向,遍歷到葉子結點時,就將它前驅的rchild指標指向它,最後葉子結點的rchild為空。
linkedlist head,pre=null; //全域性變數
linkedlist inorder(bitree bt)
//中序遍歷二叉樹bt,將葉子結點從左到右鏈成乙個單鏈表,表頭指標為head
//處理第乙個葉子結點
else //將葉子結點鏈入鍊錶
inorder(bt->rchild中序遍歷左子樹
pre->rchild=null設定鍊錶尾
}return(head); } //inorder
時間複雜度為o(n),輔助變數使用head和pre,棧空間複雜度o(n)
2023年湖北省資料總結加強
1 1 p rchild 2 p lchild 3 p lchild 4 addq q,p lchild 5 addq q,p rchild 25.1 t rchild null 2 t rchild null 3 n0 4 count t lchild 5 count t rchild 26.1 ...
2023年湖北省資料總結大綱
1 假設以i和o分別表示入棧和出棧操作。棧的初態和終態均為空,入棧和出棧的操作序列可表示為僅由i和o組成的序列,稱可以操作的序列為合法序列,否則稱為非法序列。15分 1 a和d是合法序列,b和c 是非法序列。2 設被判定的操作序列已存入一維陣列a中。int judge char a 判斷字元陣列a中...
2019湖北省資料結構 C必備
1 鏈式儲存的儲存結構所佔儲存空間 a a 分兩部分,一部分存放結點值,另一部分存放表示結點間關係的指標 b 只有一部分,存放結點值 c 只有一部分,儲存表示結點間關係的指標 d 分兩部分,一部分存放結點值,另一部分存放結點所佔單元數 2 若採用鄰接矩陣法儲存乙個n個頂點的無向圖,則該鄰接矩陣是乙個...