資料結構 單向鍊錶 C語言

2021-07-22 09:04:53 字數 3231 閱讀 5749

chainlist.h

#include

#include

typedef

struct nodechainlisttype;

chainlisttype *chainlistaddend(chainlisttype *head,data data);//新增節點到鍊錶末尾

chainlisttype *chainlistaddfirst(chainlisttype *head,data data);// 新增節點到鍊錶首部

chainlisttype *chainlistfind(chainlisttype *head,char *key);//按關鍵字在鍊錶中查詢內容

chainlisttype *chainlistinsert(chainlisttype *head,char *findkey,data data); //插入節點到鍊錶指定位置

int chainlistdelete(chainlisttype *head,char *key);//刪除指定關鍵字的節點

int chainlistlength(chainlisttype *head);//獲取鍊錶節點數量

chainlist1.c

chainlisttype *chainlistaddend(chainlisttype *head,data

data)//新增節點到鍊錶末尾

node->

data

=data;

node->next=

null;

if(head==

null)//鍊錶為空時

h=head;

while(h->next!=

null)h=h->next;

h->next=node;

return head;

}chainlisttype *chainlistaddfirst(chainlisttype *head,data

data)// 新增節點到鍊錶首部

node->

data

=data;

node->next=head;

head=node;

return head;

}chainlisttype *chainlistfind(chainlisttype *head,char *key)//按關鍵字在鍊錶中查詢內容

return

null;

}chainlisttype *chainlistinsert(chainlisttype *head,char *findkey,data

data) //插入節點到鍊錶指定位置

node->

data

=data;

node1=chainlistfind(head,findkey);

if(node1)

else

return head;

}int chainlistdelete(chainlisttype *head,char *key)//刪除指定關鍵字的節點

else

}return

0;//未找到

}int chainlistlength(chainlisttype *head)//獲取鍊錶節點數量

return i;

}

chainlisttest.c

#include

typedef

structdata;

#include"chainlist.h"

#include"chainlist1.c"

void chainlistall(chainlisttype *head)//遍歷鍊錶

}int main()

while(1);

printf("共有%d個節點\n",chainlistlength(head));

chainlistall(head);

printf("\n插入節點,輸入插入位置關鍵字:\n");

fflush(stdin);///error1:刪除後scanf跳過執行

scanf("%s",findkey);

printf("輸入插入節點的資料(key, name, age):");

scanf("%s%s%d",data.key,data.name,&data.age);

head=chainlistinsert(head,findkey,data);

chainlistall(head);

printf("\n在鍊錶中查詢關鍵字,輸入關鍵字:");

fflush(stdin);

scanf("%s",&key);

node=chainlistfind(head,key);

if(node)

else

printf("\n在鍊錶中刪除節點,輸入刪除節點的關鍵字:");

fflush(stdin);

scanf("%s",key);

chainlistdelete(head,key);

chainlistall(head);

printf("\n在鍊錶中刪除結點,輸入要刪除的關鍵字:");

fflush(stdin);//清空輸入緩衝區

scanf("%s",key);//輸入刪除結點關鍵字

chainlistdelete(head,key); //呼叫刪除結點函式

chainlistall(head); //顯示所有結點

getch();

return

0;}

例題:鍊錶實現簡單通訊錄

addresslist.c

#include

typedef structdata;

#include"chainlist.h"

#include"chainlist1.c"

void chainlistall(chainlisttype *head)//顯示聯絡人

}chainlisttype *input(chainlisttype *head)//新增聯絡人

void find(chainlisttype *head)//查詢聯絡人

}void deletec(chainlisttype *head)//刪除聯絡人

int main()

}while(select!='0');

}

資料結構(C語言) 單向鍊錶

c語言的單向鍊錶,就是在乙個將一些資料放在乙個結構體裡,然後在結構體裡加 struct next 的成員,用於指向下一結點。引用時,建立乙個臨時的結構體變數進行引用。如原結構體變數為 struct p 則 可建立 struct temp,然後 for temp p temp next null te...

資料結構 單向鍊錶

鍊錶結構的資料格式儲存 include stdafx.h 把這行放在最開始。include includeusing namespace std typedef struct data typedef struct node 這裡與上面的不同是多了node,注意如果沒有這個node,下面的struc...

資料結構(單向鍊錶)

ifndef linklist h define linklist h 鍊錶節點 template class linklistdata linklistdata linklistdata 獲取資料 t getdata public t data 資料 template class linklist...