題目 從煉表中點反轉鍊錶

2021-08-02 18:33:57 字數 849 閱讀 3874

題目:

對於鍊錶list,從中點開始進行反轉鍊錶的後半部分,對於奇數個數的鍊錶,從(n+1)/2開始反轉,對於偶數個數的鍊錶,從n/2+1開始反轉。

分析:注意的是這個題目不同於倒序列印鍊錶,所以先考慮整個反轉鍊錶的問題。要定義三個節點,ppre,pnext,pnode,記錄每乙個節點的pre和next。把pnode的next轉成pre,pnext是pnode。這裡注意一點,如果pnode==null,這就是新的list head。

中點位置反轉鍊錶:

#includeusing namespace std;

struct listnode

};listnode* reverselist(listnode* head)

int listlength = 0;

listnode* pnode = head;

listnode* startnode = null;

listnode* preversedhead = null;

listnode* ppre = null;

while(pnode!=null)

if (listlength %2 == 0)

} else

startnode = pnode;

} listnode* endnode = pnode;

pnode = pnode ->next;

startnode = pnode;

while(pnode!=null)

endnode->next = preversedhead;

return head;

}int main()

}

題目1518 反轉鍊錶

題目描述 輸入乙個鍊錶,反轉鍊錶後,輸出鍊錶的所有元素。hint 請務必使用鍊錶 輸入 輸入可能包含多個測試樣例,輸入以eof結束。對於每個測試案例,輸入的第一行為乙個整數n 0 n 1000 代表將要輸入的鍊錶的個數。輸入的第二行包含n個整數t 0 t 1000000 代表鍊錶元素。輸出 對應每個...

題目1518 反轉鍊錶

時間限制 1 秒 記憶體限制 128 兆 題目描述 輸入乙個鍊錶,反轉鍊錶後,輸出鍊錶的所有元素。hint 請務必使用鍊錶 輸入 輸入可能包含多個測試樣例,輸入以eof結束。對於每個測試案例,輸入的第一行為乙個整數n 0 n 1000 代表將要輸入的鍊錶的個數。輸入的第二行包含n個整數t 0 t 1...

leetcode鍊錶題目之206 反轉鍊錶

題目 方法一 在遍歷列表時,將當前節點的 next 指標改為指向前乙個元素。由於節點沒有引用其上乙個節點,因此必須事先儲存其前乙個元素。在更改引用之前,還需要另乙個指標來儲存下乙個節點。不要忘記在最後返回新的頭引用!definition for singly linked list.struct l...