例子:1->2->3->4->5->6->7
輸出:1->7->2->6->3->5->4
要求:空間複雜度為o(1),即不可借助其他容器
思路找到中間的節點將中間以後的節點鏈結到新的煉表頭下,反轉。然後以頭插的形式插入到前半部分的鍊錶中
找到乙個鍊錶中的中間節點,我們可以使用快慢指標的方式。即指標s走一格,指標p走兩格。當p->next為空時,此時的s就處於鍊錶的中間位置
申請乙個新節點作為頭節點,將s以後的鍊錶節點以頭插法的形式鏈結到頭節點,此時已經完成了後半部分的逆轉。
需要注意的是,當鍊表長度為奇數時,勢必會空出乙個節點,所以需要定義乙個指標一直指向最後的節點,當newhead不為空,tmp->next=newhead->next
listnode*
rerverderlist
(listnode* head)
tmp-
>next =
nullptr
;//斷開與後半部分鏈結
listnode* newhead =
newlistnode()
; newhead-
>next =
nullptr
;while
(s !=
nullptr
)//頭插進新的鍊錶,同時也斷開舊的鍊錶的後半部分
s = head;
p = newhead-
>next;
while
(s !=
nullptr
&& p !=
nullptr)if
(newhead-
>next !=
nullptr
)delete newhead;
return head;
}
8個成語接龍首尾相連 首尾相連成語接龍
成語接龍介紹 成語接龍一般採用熟知的成語字頭與字尾相連不斷延伸的方法進行接龍。它有著悠久的歷史,也有廣泛的社會基礎,是老少皆宜的民間文化娛樂活動。成語接龍作為一種廣泛開展的群眾性競爭遊戲,它必須有乙個權威 嚴密的規範方法,以體現公平 公正,使佼佼者脫穎而出。具體的接龍規則可以根據實際去指定,但是必須...
首尾相連陣列的最大子陣列和
1.求0 n 1的最大子陣列和 m 1 2.求跨越 n 1和0的最大子陣列和,分別求從0開始的最大和m 21,從n 1開始的最大和m 22,分別記錄得到最大和的位置pi,pj,這裡分兩種情況考慮 a.pib.pi pj,則求0 n 1的最小子陣列和m 3,及0 n 1的和mx m max m 1,m...
首尾相連陣列的最大子陣列和
時間限制 1000 ms 記憶體限制 65535 kb 難度 4 描述 給定乙個由n個整數元素組成的陣列arr,陣列中有正數也有負數,這個陣列不是一般的陣列,其首尾是相連的。陣列中乙個或多個連續元素可以組成乙個子陣列,其中存在這樣的子陣列arr i arr n 1 arr 0 arr j 現在請你這...