given a singly linked list l: l
0→l1→…→l
n-1→l
n,reorder it to: l
0→ln
→l1→l
n-1→l
2→ln-2→…
you must do this in-place without altering the nodes' values.
for example,given, reorder it to.
思路:先從中間切斷分為兩個鍊錶,將後乙個鍊錶反轉,再逐個插入到前乙個鍊錶。
#includeusing namespace std;
struct listnode
};//鍊錶結構定義
listnode* reverse(listnode *head)
return prh;
}// 反轉鍊錶
void reorderlist(listnode *head)
int tmp = 0;
listnode *q = head;
while (tmp < ((length - 1) / 2))
listnode *head1 = q->next;
q->next = null;
listnode *head2 = reverse(head1);
p = head;
q = head2;
// 鍊錶從中間切斷分為兩個部分
while(p != null && q != null)
// 將鍊錶的後半部分反轉後,鏈結到前半部分的鍊錶
}int main();
listnode *head = new listnode(a[0]);
listnode *p = head;
for (int i = 1; i < 8; i++)
reorderlist(head);
listnode *q = head;
while (q)
}
Leetcode 鍊錶 1 刪除節點
1.刪除鍊錶的結點 編寫乙個函式,在給定單鏈表乙個結點 非尾結點 的情況下,刪除該結點。假設該鍊錶為1 2 3 4 並且給定你鍊錶中第三個值為3的節點,在呼叫你的函式後,該鍊錶應變為1 2 4。分析 1.待刪除的節點不是尾節點 2.可以不借助待刪除節點的父節點,可以直接操作待刪除的節點 void d...
leetcode 鍊錶 回文鍊錶
請判斷乙個鍊錶是否為回文鍊錶。示例 1 輸入 1 2 輸出 false 示例 2 輸入 1 2 2 1 輸出 true 高階 你能否用 o n 時間複雜度和 o 1 空間複雜度解決此題?head null 空鍊錶,回文,返回true head.next null 只有乙個節點的列表,回文,返回tru...
leetcode 鍊錶 回文鍊錶
請判斷乙個鍊錶是否為回文鍊錶。示例 1 輸入 1 2輸出 false示例 2 輸入 1 2 2 1輸出 true高階 你能否用 o n 時間複雜度和 o 1 空間複雜度解決此題?思路 利用快慢指標找到中間節點,當快指標走到末尾時,慢指標指向中間節點 交中間節點之後的節點進行鍊錶反轉 設定指標p1從h...