將乙個鍊錶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...