当前位置:首页>综合>正文

C语言中怎样建立链表 用C语言怎么建立线性链表

2023-04-25 02:23:41 互联网 未知 综合

 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->numnum&&p1->next->num>p2->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指针指向下一个节点。