單鏈表的翻轉

2021-10-07 16:53:02 字數 1051 閱讀 8276

給定乙個帶頭結點的單鏈表和乙個整數k,要求你將鍊錶中的每k個結點做一次逆轉。例如給定單鏈表 1→2→3→4→5→6 和 k=3,你需要將鍊錶改造成 3→2→1→6→5→4;如果 k=4,則應該得到 4→3→2→1→5→6。

輸入樣例:

61 2 3 4 5 6

4輸出樣例:

4 3 2 1 5 6

#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()

/* 你的**將被嵌在這裡 */

list readinput()

else

}return head;

}void

printlist

( list l )

}void

k_reverse

( list l,

int k )

p1=l;

//p1返回到頭結點

//得到節點的總數量cnt

int f=cnt/k;

//需要翻轉f次

cnt=0;

int a[k+1]

;int t=1;

while

(cntt=1;

while

(p2!=

null

&&t<=k)

p2=p1;

cnt++;}

}

單鏈表翻轉

關於單鏈表的翻轉問題頗為困擾人。下面寫的程式只需遍歷每個節點一次,並且不需要構造輔助接點 通過new的方式 另外這個問題可以轉換為乙個迴圈鍊錶結構,很有意思。h struct node class cdatastruct cpp檔案 cdatastruct cdatastruct void cdat...

單鏈表翻轉

1,原理 使用p和q兩個指標配合工作,使得兩個節點間的指向反向,同時用r記錄剩下的鍊錶。p head q head next head next null 現在進入迴圈體,這是第一次迴圈。r q next q next p p q q r 第二次迴圈。r q next q next p p q q ...

單鏈表翻轉

相比之前的那個方法 206.reverse linked list 這個方法比較簡單,直接在鍊錶上面進行逆序 容易理解 此 是用於將帶頭結點的單鏈表進行逆序,思路 1.首先設p結點為第乙個有效結點 即頭結點的下乙個節點 q為p的下乙個節點,原因從後面可知。2.將所給節點從頭結點處斷開,然後讓p結點的...