#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...