6-1 帶頭結點的單鏈表就地逆置(10 分)
本題要求編寫函式實現帶頭結點的單鏈線性表的就地逆置操作函式。l是乙個帶頭結點的單鏈表,函式listreverse_l(linklist &l)要求在不新開闢節點的前提下將單鏈表中的元素進行逆置,如原單鏈表元素依次為1,2,3,4,則逆置後為4,3,2,1。
void listreverse_l(linklist &l);
其中l
是乙個帶頭結點的單鏈表。
//庫函式標頭檔案包含
#include#include#include//函式狀態碼定義
#define true 1
#define false 0
#define ok 1
#define error 0
#define infeasible -1
#define overflow -2
typedef int status;
typedef int elemtype; //假設線性表中的元素均為整型
typedef struct lnode
lnode,*linklist;
status listcreate_l(linklist &l,int n)
return ok;
}void listreverse_l(linklist &l);
void listprint_l(linklist &l)
}int main()
listreverse_l(l);
listprint_l(l);
return 0;
}/* 請在這裡填寫答案 */
輸入格式:
第一行輸入乙個整數n,表示單鏈表中元素個數,接下來一行共n個整數,中間用空格隔開。
輸出格式:
輸出逆置後順序表的各個元素,兩個元素之間用空格隔開,最後乙個元素後面沒有空格。
4
1 2 3 4
4 3 2 1
本題**如下:
#include#include#include//函式狀態碼定義
#define true 1
#define false 0
#define ok 1
#define error 0
#define infeasible -1
#define overflow -2
typedef int status;
typedef int elemtype;
typedef struct lnodelnode, *linklist;
status listcreate_l(linklist &l,int n);
void listreverse_l(linklist &l);
void listprint_l(linklist &l);
status listcreate_l(linklist &l,int n)
return ok;
}void listreverse_l(linklist &l)
}void listprint_l(linklist &l)
printf("\n");
}int main()
listreverse_l(l);
listprint_l(l);
return 0;
}
這個題的想法是將節點分為三個一組,將第二個接在頭節點之後,再將第乙個節點接在第二個節點之後。完成上述操作之後將第
一、二個節點視為乙個整體(或者說是乙個節點),將第三個節點與上述整體重複上述操作。迷惑點在於需要事先儲存第乙個節點的下乙個節點,以及節點轉換間的先後關係,可以畫張圖來理解。
以上。
帶頭結點的單鏈表就地逆置
本題要求編寫函式實現帶頭結點的單鏈線性表的就地逆置操作函式。l是乙個帶頭結點的單鏈表,函式listreverse l linklist l 要求在不新開闢節點的前提下將單鏈表中的元素進行逆置,如原單鏈表元素依次為1,2,3,4,則逆置後為4,3,2,1。void listreverse l link...
帶頭結點的單鏈表就地逆置
本題要求實現乙個函式,對帶有頭結點的單鏈表進行就地逆置。函式介面定義 void reverse linklist l l是帶頭結點的單鏈表的頭指標。裁判測試程式樣例 include include typedef int elemtype typedef struct lnode lnode,lin...
帶頭結點的單鏈表就地逆置
本題要求編寫函式實現帶頭結點的單鏈線性表的就地逆置操作函式。l是乙個帶頭結點的單鏈表,函式listreverse l linklist l 要求在不新開闢節點的前提下將單鏈表中的元素進行逆置,如原單鏈表元素依次為1,2,3,4,則逆置後為4,3,2,1。函式介面定義 void listreverse...