將單鏈表的每K個節點之間逆序

2021-10-08 19:39:27 字數 1237 閱讀 2991

將單鏈表的每k個節點之間逆序

給定乙個單鏈表,實現乙個調整單鏈表的函式,使得每 k 個節點之間的值逆序,如果最後不夠 k 個節點一組,則不調整最後幾個節點。

輸入描述:

第一行乙個整數 n,n 表示單鏈表的節點數量。

第二行 n 個整數 val 表示鍊錶的各個節點的值。

第三行乙個整數 k。

輸出描述:

在給定的函式內返回鍊錶的頭指標。

示例1輸入

5

1 2 3 4 5

3

輸出
3 2 1 4 5
備註:

1 ≤k

≤n≤1

06

1 \leq k \leq n \leq 10^6

1≤k≤n≤

106−10

6≤va

li≤1

06

-10^6 \leq val_i \leq 10^6

−106≤v

ali​

≤106

題解:使用乙個棧輔助或者直接原地反轉都行。這裡我選擇的是原地反轉,記得記錄待反轉子鍊錶左邊界的前驅節點和右邊界的後繼節點,那樣很容易操作了。

**:

# include

using

namespace std;

struct list_node

;list_node *

input_list()

else

}return phead;

}void

reverse_list

(list_node*

& left, list_node*

& st, list_node*

& ed, list_node*

& right)

if(left) left-

>next = ed;

st->next = right;

}list_node *

reverse_knode

(list_node * head,

int k)

cur = right;

cnt +=1

;}return head;

}void

print_list

(list_node * head)

puts(""

);}int main (

)

將單鏈表的每k個節點之間逆序

題目 給定乙個單鏈表的頭結點head,實現乙個調整單鏈表的函式,使得每k個節點之間逆序,如果最後不管k個節點一組,則不調整最後幾個節點。example 鍊錶 1 2 3 4 5 6 7 8 nullptr,k 3 調整後 3 2 1 6 5 4 7 8 nullptr 1 include inclu...

將單鏈表的每K個結點逆序

簡單做法,直接使用棧儲存那k個結點,然後將這k個結點逆序後連線到鍊錶上去,只需要注意頭節點即可。高階解法直接對鍊錶進行處理,每一次記錄當前逆序分組的第乙個結點和最後乙個結點,也需要考慮頭節點 解法 使用棧 直接對鍊錶進行迭代 普通 public static node reverseknode1 n...

2 13鍊錶每k個節點之間逆序

鍊錶每k個節點之間逆序,最後不足k個的節點不用逆序。將單鏈表每k個節點逆序 public static void fun node head,int k if s.size k 如果棧中還有元素,不需要逆置 所以基於last節點進行頭插 while s.empty 建立乙個無環單鏈表 public ...