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;c语言listinsert函数
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(“该节点不存在”);
}

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。