將單鏈表的每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 ...