單鏈表操作大全

2022-02-23 09:26:50 字數 2228 閱讀 9120

如果說你經常在linux中,或者在kernel下面做事的話,一定會碰到鍊錶的操作。

如果你沒有真正了解單鏈表,還是把基礎打好吧。

如下程式綜合了鍊錶的常用方面,請你下自己寫出每個函式,debug並執行,直到執行正確;然後對照參考程式,

比較程式的差異,有時候,可能你測試不全面,會有這樣那樣的錯誤,多思考,這樣,你才記憶深刻。

#include #include 

typedef

struct

node

node;

//鍊錶輸出

void output(node *head)

printf(

"\r\n

");

} //

鍊錶建立

node*creat()

head->pstnext =null;

p =head;

while

(cycle)

s->ndate =date;

p->pstnext =s;

p =s;

} else

} p->pstnext =null;

return

(head);

} //

單鏈表測長

void length(node *head)

printf(

"%d\r\n

", j);

} //

鍊錶按值查詢

void research_date(node *head, int

date)

if(null ==p)

else

if(date == p->ndate)

return

; }

//按序號查詢

void research_number(node *head, int

num)

if(p ==null)

else

if(i == 0

)

else

if(i ==num)

} //

在指定元素之前插入新結點

void insert_1(node *head, int i, int

newdate)

if(null == pre || j > i-1

)

else

new->ndate =newdate;

new->pstnext = pre->pstnext;

pre->pstnext =new;

} }

//在指定元素之後插入新結點

void insert_2(node *head, int i, int

newdate)

if( j ==i)

new->ndate =newdate;

new->pstnext = pre->pstnext;

pre->pstnext =new;

}else

} //刪除指定結點

void delete_1(node *head, int

i3)

if(null ==p)

else

} //指定刪除單鏈表中某個資料,並統計刪除此資料的個數

int delete_2(node *head, int

delete_date)

else

} return

count;

} //

鍊錶逆置,一定要掌握好,詳解見圖

void reverse_list(node *head)

q = head->pstnext->pstnext;

head->pstnext->pstnext =null;

while(null !=q)

} //

單鏈表的連線

void connect_list(node *head, node *head_new)

p->pstnext = head_new->pstnext;

} //

單鏈表銷毀

void destroy_list(node*head)

} main()

單鏈表操作

include include typedef struct node tag node 建立不帶頭結點的單鏈表 node createnode else p q scanf d n 函式體結束,q指標變數被釋放,不能通過head引數帶回到呼叫函式 要把head帶回到呼叫函式,要把它定義為指向指標的...

單鏈表操作

include stdio.h include malloc.h include define n 10 代表要處理的元素個數 可以誰使用者的意思修改 define ok 1 define overflow 0 typedef int elemtype typedef int status type...

單鏈表操作

這一次補上鍊表的注釋,是空閒的時候敲出來的,如果有錯,希望幫忙糾正 部分給出了詳細說明,這裡只選取了基本操作,因為更複雜的鍊錶操作太繁瑣,這裡就不寫了 如果有什麼不懂的地方,可以隨時詢問 include using namespace std typedef int elemtype struct ...