Leetcode 鍊錶的部分倒插逆置

2021-10-07 00:23:03 字數 660 閱讀 2507

將乙個鍊錶m位置到n位置之間的區間反轉,要求使用原地演算法,並且在一次掃瞄之內完成反轉。

例如:給出的鍊錶為1->2->3->4->5->null, m = 2 ,n = 4,

返回1->4->3->2->5->null.

注意:給出的m,n滿足以下條件:

1 ≤ m ≤ n ≤ 鍊錶長度

基本思路:建立乙個初始的輔助節點

通過pre_start start定位到相應的位置

然後從start往後的乙個節點開始  依次前叉入 pre_start->next位置

注意點: 通過tmp 記錄start->next位置  (即通過start->next來作為移動游標)

每次迴圈 :

listnode* reversebetween(listnode* head, int m, int n) 

for(int i=0;inext;//臨時記錄

start->next=temp->next;

temp->next=pre_start->next;

pre_start->next=temp;

}//迴圈結束後 需要修改 pre_start->next為新的start

return null_node->next;

}

leetcode 92 反轉部分鍊錶

這個題是反轉一部分鍊錶。咱們希望預存乙個在left之前的節點,所以採用啞節點。之後採用鍊錶反轉的方法即可,對指標操作後即可完成。注意 l r時無需反轉,而且操作很複雜,直接返回結果即可。definition for singly linked list.struct listnode listnod...

鍊錶的部分操作

include includestruct node int flag 建立鍊錶 node creat struct node head return head 列印鍊錶 void output struct node head printf n n 查詢結點 void find struct no...

部分鍊錶題

include bool insert last list ls,data data tmp next node return true void display list ls printf n list createlist 建立鍊錶 ls head next null 空鍊錶 return l...