四、算法設(shè)計題(本大題共2小題,每小題7分,共14分)
34.設(shè)單鏈表及鏈棧S的結(jié)構(gòu)定義如下:
typedef struct node
{ Data Type data;
struct node*next;
}linkstack;
編寫一個算法void ReverseList(1inkstack *head),借助于棧S將帶頭結(jié)點單鏈表head中序號為奇數(shù)的結(jié)點逆置,序號為偶數(shù)的結(jié)點保持不變。(例如:單鏈表的邏輯結(jié)構(gòu)為(a1,a2,a3,a4,a5,a6),逆置后變?yōu)?a5,a2,a3,a4,a1,a6))。
說明:棧的初始化運算用InitStack(S);進棧運算用Push(S,x);判?者\算用EmptyStack(S);出棧運算用Pop(S);取棧頂元素運算用Gettop(S)。
35.以二叉鏈表作為存儲結(jié)構(gòu),試編寫遞歸算法實現(xiàn)求二叉樹中葉子結(jié)點個數(shù)。