C语言链表实现:增删改查操作全解析与代码示例
创始人
2025-01-01 11:09:31
0 次浏览
0 评论
如何用C语言创建一个链表,实现增、删、改、查?
#include函数形式如下:NODE*creat_link(intdirection){NODE*head,*p,*tail;intxh,i=1;if(direction==1)//当direction的值为1时,新创建节点链接到末尾{tail=head=(NODE*)malloc(sizeof(NODE));head->next=NULL;printf("请输入%d的学号Student:",i);scanf("%d",&xh);while(xh>0)//暂时从键盘输入学生本例中,当输入的学号非正数时,建立链表{p=(NODE*)malloc(sizeof(NODE));p->st.num=xh;printf("请输入第%d个学生的姓名:",i);scanf("%s",p->st.name);printf("请输入第%d名学生的成绩:",i);scanf("%f",&p->st.score);p->next=NULL;tail->next=p;tail=p;i=i+1;printf("请输入%d学生的学号:",i);scanf("%d",&xh);}}elseif(direction==0)//当direction为0时,新创建的节点成为第一个节点{head=(NODE*)malloc(sizeof(NODE));head->next=NULL;printf("请输入第%d个学生的学号:",i);scanf("%d",&xh);while(xh>0)//暂时输入通过键盘输入学生状态。
当输入的学号非正数时,建立链表{p=(NODE*)malloc(sizeof(NODE));p->st.num=xh;printf("请输入第%d名学生的姓名:",i);scanf("%s",p->st.name);printf("请输入第%d名学生的姓名第%d位学生"学生成绩:",i);scanf("%f",&p->st.score);p->next=head->next;head->next=p;i=i+1;printf("请输入第%d个学生的学号:",i);scanf("%d",&xh);}}returnhead;}//2.写一个函数,输出上面链表的每个节点的数据字段值,这个函数对应的函数需要一个形参,代表链表的头指针的形式。
如下:voidprint_link(NODE*head){NODE*p;p=head->next;printf("%-10s%-20s%-10s\n","学号","姓名","分数");while(p!=NULL){printf("%-10d%-20s%-10.1f\n",p->st.num,p->st.name,p->st.score);p=p->next;}//该函数可以输出head指向的所有链表节点值,输出格式如下:/*该函数输出线性表sq中的所有数据,格式如下:学号、姓名、成绩12张三234.518李四987.7…………………….*/}//3、编写删除节点中节点的函数intdel_link(NODE*head,charn)链表ame[]){NODE*p,*p1;p=head->next;p1=head;while(p!=NULL){if(strcmp(p->st.name,name)!=0){p1=p;p=p->下一个;}else{break;}}if(p!=NULL){p1->next=p->next;free(p);return1;}else{return0;}//删除head指向的链表中名为name的节点,删除成功返回1,失败返回0}//4.写出要插入链表的节点。
点算法ininsert(NODE*head,studentx,intwz){NODE*p=head;inti=0,jg;if(wz<=0){jg=0;}else{while(i
插入成功则返回1,插入失败则返回0。
}//5。
编写main函数,调用上面对应的程序算法,建立链表,并输出链表的值。
voidmain(){NODE*head;//定义指针变量headintwz;//表示插入位置charxm[30];studentst;//定义一个变量st,代表一个学生的信息head=creat_link(1);print_link(head);//调用函数创建链表并将返回值发送给head;//调用函数输出链表中每个节点的值//输入学生的相关信息发送给变量strintf的相关成员p("\n\n请输入要插入的位置:");scanf("%d",&wz);//输入wz的值printf("请输入待插入学生的学号:");scanf("%d",&st.num);printf("请输入待插入学生的姓名:");scanf("%s",st.name);printf("请输入要插入的学生成绩:");scanf("%f",&st.score);//调用函数放入学生链表中的st值作为节点插入。
如果插入成功,则输出新的链表if(insert(head,st,wz)==1){printf("\n插入成功,新表为:\n");print_link(head);}else{printf("插入不成功");}//调用函数删除链表中指定节点的值。
如果删除成功,则生成新的链表printf("\n\n请输入必填的被删除学生姓名:");getchar();gets(xm);if(del_link(head,xm)==1){printf("\n删除成功,新表为:\n");print_link(head);}else{printf("删除不成功");}}

用C语言写的数据结构的定义
typedefstruct//typedef的意思是定义类型。(比如TypeInt;所以可以用它来定义一个整型变量,number;当然这里定义的也可以像NodeOther一样使用;这说明Other是一个struct){elementTypeData;;(这里elementtype表示可以有很多数据,比如inta;charaddress[10]等)structnode*next;//定义指向节点中下一个节点的next指针(例如对于,当前节点是p,那么p->next指向下一个节点)}node;//定义一个名为node的结构体
上一篇:
字符串字符个数怎么算
相关文章

C语言pow函数详解及使用指南
2024-12-26 23:20:23
Excel字符串拼接方法全解析:三招轻松...
2025-03-25 08:07:44
移动C语言编程软件推荐:五大应用助你轻松...
2025-02-15 06:13:42
C语言入门:轻松学会如何计算并显示数字的...
2024-12-20 01:49:23
C语言基础:count与printf函数...
2024-12-25 12:23:58
Python编程:圆柱体表面积与体积计算...
2025-01-25 05:31:04
编程语言中随机数列生成方法详解
2025-04-06 07:52:51
NAS Docker安装OpenWrt:...
2025-03-01 06:37:42
C语言教程:轻松实现三位数逆序输出
2025-03-04 03:16:50
数字与字符串:基础类型详解及转换技巧
2024-12-26 01:24:32最新文章
13
2025-04
13
2025-04
13
2025-04
13
2025-04
13
2025-04
13
2025-04
13
2025-04
13
2025-04
13
2025-04
13
2025-04
热门文章
1
JavaScript数组转字符串:两种方...
如何 用 js把 数组 转换成 字符串这里的系列窗口为您提供了两种方式。1。使用...
2
C语言实现三角形面积计算:海伦公式应用实...
如何用c语言编写已知三角形三边求面积?已知语言C可以找到三角形三角侧的面积,如下...
3
计算机专业核心:C语言在多学科中的应用与...
哪些专业学c语言对于计算机专业来说,入门级编程语言C是用来为学生的编程打下坚实的...
4
JSF架构解析与Java学习资源分享:J...
JavaServerFacesJSF体系结构JavaServerFaces(JS...
5
数据结构C语言版深度解析与C语言入门很简...
《数据结构(C语言版)》.严蔚敏吴伟民著.pdf在《数据结构(C语言版)》一书中...
6
C语言字符串常量解析:区别、用途及存储方...
什么是字符串常量字符串常量是C语言中的一种数据类型,它是由一对双引号括起来的字符...
7
C语言printf函数:格式字符串与输出...
printf函数中的格式与输出项有什么关系?在C语言中,printf函数中的格式...
8
Excel技巧:计算字符串起始位置与合并...
如何计算字符串在特定文本中的起始位置,怎么计算字符串在特定文本中的起始位置您可以...
9
Python发音全解:掌握正确的发音方法...
python怎么读我的很多学习编程的朋友可能都知道Python这个词,但是他们中...
10
字符与字符串:编程中的基础文本类型解析
字符串什么意思字符串是由数字、字母和下划线组成的字符串,表示为s=“a1a2…a...