如何用C 構建單鏈表,並實現逆置

時間 2023-08-12 06:34:56

1樓:匿名使用者

樓上兩位大哥,別人都說了單鏈表,乙個說雙向指標沒必要逆置,雙向指標還是單鏈表麼?

乙個直接換頭尾,你能換頭尾實現逆置?

簡直不知所謂。不到十行的**,你要是會的話,寫一下或者給個鏈結又何妨?不會就不要誤導別人。

定義:typedef struct node{

elemtype data;

node* link;

node, *list;

鍊錶逆置:鍊錶逆序需要維護三個指標,乙個指向前乙個*pre,乙個指向當前節點*cur,乙個指向下乙個節點*next以使當前節點的link域改變時,還能訪問到其一下個節點。**如下:

list reverselist(list head){

assert(head);

list next, pre = head, cur = head->link;

while(cur) {

next = cur->link; /儲存當前結點的下乙個結點。

cur->link = pre; /改變當前結點的link域,指向它的前乙個結點;

pre = cur; /指標移到一下個結點。

cur = next;

head = pre; /恢復頭結點。

return head;

2樓:胡國啊松

單鏈表的資料滿大街都是,至於逆置麼,如果你的鍊錶是雙向指標的話就沒有必要了吧。

3樓:洋子and輝

定義頭尾指標,將頭尾指標互指,就可實現逆置……

單鏈表逆置

4樓:華源網路

a:將單鏈表儲存為陣列,然後按照陣列的索引逆序進行反轉。

c:從第2個節點到第n個節點,依次逐節點插入到第1個節點(head節點)之後,最後將第乙個節點挪到新錶的表尾。

d: 遞迴(相信我們都熟悉的一點是,對於樹的大部分問題,基本可以考慮用遞迴來解決。但是我們不太熟悉的一點是,對於單鏈表的一些問題,也可以使用遞迴。

可以認為單鏈表是一顆永遠只有左(右)子樹的樹,因此可以考慮用遞迴來解決。或者說,因為單鏈表本身的結構也有自相似的特點,所以可以考慮用遞迴來解決)

pre指向前乙個結點,cur指向當前結點,next指向下乙個節點。

迴圈實現遞迴實現思路參考。

c 鍊錶改錯,C 單鏈表的建立與輸出 程式求改錯

筆誤吧,第一條交換的 previousnode p prev 改為 p previousnode next 函式送入的previousnode 一定是被交換兩個節點的父節點。就是下面說的鍊錶中的1。你的 裡中previousnode上來就賦為p prev了,此時p還沒有值 為0或隨機值 後面的所有操...

C語言實現堆疊,求C語言程式例項,鍊錶實現堆疊的操作

include char a 1111 char sp a define push x sp x define pop sp define top sp 1 define empty sp a int main void printf 你輸入的內容是 n n sp 0 printf a return...

建立單鏈表

include using namespace std template class list template class linklist template class node template class linklist public list linklist telem a,int n...

c,如何用迴圈來實現賦值,C 迴圈遍歷控制項為其賦值

string a new string 5 int count 0 foreach var item in this.controls if count 5 break 100同理。自己修改下。如果textbox是動態新增的。就在新增的時候寫上textbox.tag 對應的textbox後的值。比如...

單鏈表的問題

沒發現嚴重的錯誤。define null 0 define type struct stu define len sizeof struct stu struct stu type creat int n 建立單鏈表 return head void main 主函式實現列印單鏈表中的資料 free...