鍊錶 建立 插入 刪除 查詢

2021-08-08 00:00:30 字數 2925 閱讀 8307

#include

#include

typedef struct node

int data;

struct node *next;

}node;

node *createlist()//建立乙個單鏈表

printf("建立乙個長度為

n的鍊錶,請輸入

n:");

int n;

scanf("%d",&n);

node *l;

l=(node *)malloc(sizeof(node));//申請頭結點空間

l->next=null;//初始化乙個空鍊錶

node *p,*r;

r=l;//r始終指向終端結點,開始時指向頭結點

int num;//資料

printf("請輸入

%d個資料:

",n);

while(n--)

scanf("%d",&num);

p=(node *)malloc(sizeof(node));//申請新的結點

p->data=num;//結點資料域賦值

r->next=p;

r=p;

r->next=null;

return l;

int insertlist(node *l,int i,int e)//插入資料

node *p;

p=l;

int j=0;

while(p&&jp=p->next;

j++;

}//找到位置前乙個節點p

if(!p||j>i-1)

return 0;//插入位置有問題

node *r;//插入的結點為r

r=(node *)malloc(sizeof(node));//開闢新節點

r->data=e;//插入資料

r->next=p->next;//r的指標域指向

p的指標域 即

p+1的位址

p->next=r;//p的指標域指向r

return 1;

int deletelist(node *l,int i,int *e)//刪除資料

node *p;

p=l;

int j=0;

while(p->next&&jp=p->next;

j++;

}//找到位置前乙個節點p

if(!(p->next)||j>i-1)

return 0;//刪除位置有問題

node *q;//新指標

q=p->next;//新指標指向

p+1的位址

p->next=q->next;//p的指標域指向

q+1的位址 即

p+2的位址

*e=q->data;

return 1;

int searchlist(node *l,int e)//查詢資料

node *p;

p=l->next;

int i=0;//記錄位置

while(p!=null)

i++;

if(p->data==e)

return i;

p=p->next;//指向下乙個

return 0;//找不到返回0

void showlist(node *l)

printf("鍊錶中元素為:

");

node *r;

r=l->next;

while(r!=null)

printf("%d ",r->data);

r=r->next;

printf("\n");

int main()

node l;

l=*createlist();

while(1)

printf("1:插入     

2:刪除     

3:查詢     

0:退出

\n");

printf("輸入你的選擇:

");

int xuan;

scanf("%d",&xuan);

int t,shu;

if(xuan==1)

printf("請輸入資料插入的位置

t和數值

shu:

");

scanf("%d%d",&t,&shu);

printf("%s",insertlist(&l,t,shu)?"插入成功

.\n":"

插入失敗

.\n");

printf("插入後:

");

showlist(&l);

if(xuan==2)

printf("請輸入資料刪除的位置

t :");

scanf("%d",&t);

if(deletelist(&l,t,&shu))

printf("刪除成功

.刪除的資料是:

%d\n",shu);

else

printf("刪除失敗

.位置有誤

.");

printf("刪除後:

");

showlist(&l);

if(xuan==3)

printf("請輸入要查詢的資料

shu :");

scanf("%d",&shu);

if(searchlist(&l,shu))

printf("查詢成功

.查詢的資料位置是:

%d\n",searchlist(&l,shu));

else

printf("查詢失敗

.沒有此資料

.\n");

if(xuan==0)

break;

return 0;

鍊錶建立 插入 刪除

這兩天,拼命理解鍊錶,儘管現在理解還是不夠,但終於把長久以來一直折磨我的鍊錶用c 打出來了。還是有點小小的成就感。以下是 包括鍊錶建立 頭插法和尾插法 插入乙個位置的鍊錶 刪除乙個位置的鍊錶以及整個鍊錶的刪除。define null 0 include using namespace std int...

鍊錶基礎,建立,查詢,插入,整體刪除

本文是想給對鍊錶基本不是太了解的人準備,這篇文章中的方法都只是最基本的方法,可以在 c語言程式設計 一書中找到,我只是補上了自己的理解幫助沒有看懂的小夥伴,鍊錶更難的方法我會在以後補上,一起加油!鍊錶的建立 建立和輸出有若干個學生記錄的帶頭結點的單向鍊錶,用指標型別的函式creat 建立鍊錶,返回鍊...

鍊錶的建立 刪除 插入

1.鍊錶的建立 需要乙個頭指標 結點指標 尾指標即可。這裡值得注意的是,建立的過程頭指標是不能變的,而每次插入乙個節點,尾指標都要後移乙個節點 一開始把尾指標指向頭指標 如建立含有n個結點的鍊錶如下 node create else pend next null ps new node delete...