給定乙個帶頭結點的單鏈表和乙個整數k,要求你將鍊錶中的每k個結點做一次逆轉。例如給定單鏈表 1→2→3→4→5→6 和 k=3,你需要將鍊錶改造成 3→2→1→6→5→4;如果 k=4,則應該得到 4→3→2→1→5→6。
函式介面定義:
void k_reverse( list l, int k );
其中list
結構定義如下:
typedef struct node *ptrtonode;
struct node ;
typedef ptrtonode list; /* 定義單鏈表型別 */
l是給定的帶頭結點的單鏈表,k是每段的長度。函式k_reverse應將l中的結點按要求分段逆轉。裁判測試程式樣例:
#include #include typedef int elementtype;
typedef struct node *ptrtonode;
struct node ;
typedef ptrtonode list; /* 定義單鏈表型別 */
list readinput(); /* 裁判實現,細節不表 */
void printlist( list l ); /* 裁判實現,細節不表 */
void k_reverse( list l, int k );
int main()
/* 你的**將被嵌在這裡 */
輸入樣例:61 2 3 4 5 6
4輸出樣例:
//!不足k 個,不用逆置
return
;else
t->next = w;
//!將原來的第乙個資料結點 t ,即現在第k個資料結點,將之前一刀兩斷的接到尾部
h = t;
//!更新下次可能要逆置片段的頭結點 }}
}其實思路挺簡單的,但是當時腦子可能不太清醒沒實現對,以上是腦子清醒後寫的。
3 5 單鏈表分段逆轉 20 分
給定乙個帶頭結點的單鏈表和乙個整數k,要求你將鍊錶中的每k個結點做一次逆轉。例如給定單鏈表 1 2 3 4 5 6 和 k 3,你需要將鍊錶改造成 3 2 1 6 5 4 如果 k 4,則應該得到 4 3 2 1 5 6。void k reverse list l,int k 其中list結構定義如...
4 1 單鏈表逆轉 20分
4 1 單鏈表逆轉 20分 本題要求實現乙個函式,將給定的單鏈表逆轉。list reverse list l 其中list結構定義如下 typedef struct node ptrtonode struct node typedef ptrtonode list 定義單鏈表型別 l是給定單鏈表,函...
4 1 單鏈表逆轉 20分
本題要求實現乙個函式,將給定的單鏈表逆轉。函式介面定義 list reverse list l 其中list結構定義如下 typedef struct node ptrtonode struct node typedef ptrtonode list 定義單鏈表型別 l是給定單鏈表,函式revers...