C语言中怎样建立链表 用C语言怎么建立线性链表
C语言中怎样建立链表
参考以前写的这个吧,写的不好,你修改吧
#include
#include
#include
#define CD sizeof(struct Biao)
struct Biao
{
int num
struct Biao *next
}
int m,x
int main()
{
struct Biao *jianli()
void paixu(struct Biao *n)
void chashu(struct Biao *n)
void shanshu(struct Biao *n)
void qiupingjunzhi(struct Biao *n)
void tuichu()
int n
struct Biao *t
printf("1.建立链表
2.排序
3.插数
4.删数
5.求平均值
")
printf("请输入选项:
")
for()
{
scanf("%d",&n)
switch(n)
{
case 1:t=jianli()break
case 2:paixu(t)break
case 3:chashu(t)break
case 4:shanshu(t)break
case 5:qiupingjunzhi(t)break
case 6:tuichu()break
default:printf("输入错误!请重新输入
")
}
}
}
struct Biao *jianli()
{
int i,j
printf("建立链表,请输入数据:
")
struct Biao *head,*p1,*p2
p1=p2=(struct Biao * )malloc(CD)//if(p1==NULL)建立链表失败
for(i=0i<=100i )
{
if(i==0)
{
head=p1
p2->next=p1=(struct Biao * )malloc(CD)
p2=p1
continue
}
if(p1==NULL)
break
else
{
scanf("%d",&p1->num)
if(p1->num==-1)
{
p2->num=NULL
break
}
p2->next=p1=(struct Biao * )malloc(CD)
p2=p1
}
}
if(head->next->num==NULL)
printf("您建立了一个空链表
")
else
{
printf("共有数据:%d
",i-1)
m=i-1
printf("输出链表:
")
p1=head->next
for(j=0j
printf("%d ",p1->num)
p1=p1->next
}
}
printf("
")
return(head)
}
void paixu(struct Biao *n)
{
int i,j,a,temp
a=m
struct Biao *p1,*p2,*tp
p2=p1=n->next
printf("从小到大排序结果:
")
for(i=0i
p1=p2
tp=p1
for(j=i 1j
if((p1->next->num)<(tp->num))
{
tp=p1->next
}
p1=p1->next
}
temp=tp->numtp->num=p2->nump2->num=temp
p2=p2->next
}
p1=n->next
for(i=0i
printf("%d ",p1->num)
p1=p1->next
}
printf("
")
}
void chashu(struct Biao *n)
{
int a,i,j
struct Biao *p1,*p2,*tp
m=m 1
x=m
a=m
p1=n
printf("请插入数字:
")
p2=(struct Biao *)malloc(CD)
scanf("%d",&p2->num)
p1=n->next
for(i=0i
if(p1->num<=p2->num&&p1->next->num>p2->num)
{
tp=p1->next
p1->next=p2
p2->next=tp
break
}
if(p1->num
{
tp=p1->next
p1->next=p2
p2->next=tp
break
}
if(n->next->num>p2->num)
{
tp=n->next
n->next=p2
p2->next=tp
break
}
p1=p1->next
}
p1=n//
for(i=0i
p1=p1->next
}
if(p1->num<=p2->num)
{
tp=p1->next
p1->next=p2
p2->next=tp
}//算法不简便
printf("插入后的数据:
")
p1=n->next
for(i=0i
printf("%d ",p1->num)
p1=p1->next
}
printf("
")
printf("数据个数:%d
",a)
}
void shanshu(struct Biao *n)
{
int a,i,j
a=x
struct Biao *p1,*p2
printf("请输入要删除的数:
")
scanf("%d",&j)
for()
{
p1=n
for(i=0i
if(p1->next->num==j)
{
p2=p1->next
p1->next=p1->next->next
a-=1
x-=1
break
}
p1=p1->next
}
if(i==a)
break
}
printf("结果:
")
p1=n->next
for(i=0i
printf("%d ",p1->num)
p1=p1->next
}
printf("
")
printf("剩余数据个数:%d
",x)
}
void qiupingjunzhi(struct Biao *n)
{
int s,i
struct Biao *p1
s=0
p1=n->next
for(i=0i
s =p1->num
p1=p1->next
}
printf("平均值为:%f
",s*1.0/x)
}
void tuichu()
{
exit(0)
}
用C语言怎么建立线性链表?
线性链表是一种数据结构。
使用指针在线性表的各个节点进行连接。
struct NODE
{
int value
NODE* next
}
这种结构就是一种线性表的数据结构咯,你使用next指针指向下一个节点。