c语言链表操作代码大全

标题//链表的创建,遍历,删除,插入,排序以及修改链表节点的值

#include"stdio.h"
#include"malloc.h"
typedef struct student
{
float score;
struct student *next;
}linklist;
linklist *create_list(int n);
void traverse_list(linklist *head);//遍历函数声明
sort_list(linklist * head,int len);//排序函数申明
void change (linklist *head,int n);//改变链表节点的值函数申明
void delet(linklist * head,int n);//删除节点的值函数申明
void insert(linklist * head,int n);//插入一个节点的函数申明;
int main()删除线格式 删除线格式
{
linklist * head;
int n;
printf(“请输入链表长度:n=”);
scanf("%d",&n);
head=create_list(n);
traverse_list(head);
//sort_list(head,n);
//printf(“该链表的排序为:\n”);
//traverse_list(head);
//change(head,2);
//printf(“删除第二个节点后的链表为:\n”);
//delet(head,2);
printf(“在第二个节点之前插入一个节点:”);
insert(head,1);
traverse_list(head);
return 0;
}
//链表的创建,n为节点个数//
linklist *create_list(int n)
{
int i;
linklist *head,*node,*end;
head=(linklist * )malloc(sizeof(linklist));
end=head;//空链表的时候头尾节点相同
for(i=0;i<n;i++)
{
node=(linklist * )malloc(sizeof(linklist));
printf(“请输入第%d个节点的值:”,i+1);
scanf("%f",&node->score);
end->next=node;
end=node;
}
end->next=NULL;
return head;
}
//链表遍历操作//
void traverse_list(linklist *head)
{
linklist *p;
p=head->next;
while(NULL!=p)
{
printf("%f",p->score);
printf("\n");
p=p->next;
}
}
//链表的排序//
sort_list(linklist * head,int len)
{
int i,j,t;
linklist *p,q;
for(i=0,p=head->next;i<len-1;i++,p=p->next)
{
for(j=i+1,q=p->next;j<len;j++,q=q->next)
if(p->scorescore)
{
t=p->score;
p->score=q->score;
q->score=t;
}
}
}
//改变链表的节点值//
void change (linklist head,int n)
{
linklist * t=head;
int i=0;
while(i<n&&t!=NULL)
{
t=t->next;
i++;
}
if(t!=NULL)
{
printf(“输入要修改的值:”);
scanf("%f",&t->score);
}
else
{
printf(“节点不存在”);
}
}
//删除链表的节点值的函数//
void delet(linklist * head,int n)
{
linklist * t=head,
in;
int i=0;
while(i<n&&t!=NULL)
{
in=t;
t=t->next;
i++;
}
if(t!=NULL)
{
in->next=t->next;
free(t);
}
else
{
printf(“该节点不存在”);
}
}
//插入一个节点//
void insert(linklist * head,int n)
{
linklist * t=head,
in;
int i=0;
while(i<n&&t!=NULL)
{
t=t->next;
i++;
}
if(t!=NULL)
{
in=(linklist *)malloc(sizeof(linklist));
printf(“请输入要插入的值:”);
scanf("%f",&in->score);
in->next=t->next;
t->next=in;
}
else
{
printf(“该节点不存在”);
}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

没有梦想,何必远方

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值