題目:
對於鍊錶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...