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语言字符串处理:输入输出技巧与字符串删...
2024-12-23 20:25:06C语言变量赋值与交换技巧解析及数学学习方...
2024-12-28 13:36:44C语言while循环详解及用法技巧
2024-12-31 23:18:27Print、printf、println...
2024-12-20 23:05:47C语言根号函数实现与使用技巧
2024-12-16 06:05:58字符串转数字全攻略:多种方法解析与应用
2024-12-16 03:56:00C语言if语句与ifelse用法详解
2024-12-30 23:58:41Excel字符串连接技巧:CONCATE...
2024-12-17 10:56:53Python运算符全解析:数量与类型一览
2024-12-31 21:42:57KMP算法:高效字符串匹配原理与实现
2024-12-23 21:53:21最新文章
12
2025-01
12
2025-01
12
2025-01
12
2025-01
12
2025-01
12
2025-01
12
2025-01
12
2025-01
12
2025-01
12
2025-01
热门文章
1
JSF架构解析与Java学习资源分享:J...
JavaServerFacesJSF体系结构JavaServerFaces(JS...
2
数据结构C语言版深度解析与C语言入门很简...
《数据结构(C语言版)》.严蔚敏吴伟民著.pdf在《数据结构(C语言版)》一书中...
3
C语言字符串常量解析:区别、用途及存储方...
什么是字符串常量字符串常量是C语言中的一种数据类型,它是由一对双引号括起来的字符...
4
C语言printf函数:格式字符串与输出...
printf函数中的格式与输出项有什么关系?在C语言中,printf函数中的格式...
5
Excel技巧:计算字符串起始位置与合并...
如何计算字符串在特定文本中的起始位置,怎么计算字符串在特定文本中的起始位置您可以...
6
Python发音全解:掌握正确的发音方法...
python怎么读我的很多学习编程的朋友可能都知道Python这个词,但是他们中...
7
字符与字符串:编程中的基础文本类型解析
字符串什么意思字符串是由数字、字母和下划线组成的字符串,表示为s=“a1a2…a...
8
Python编程语言:多领域应用与开发优...
Python的作用是什么?Python是一种跨平台计算机编程语言,是ABC语言的...
9
深度解析:C语言编程特点与应用领域
什么叫c语言C语言是一种编程语言。C编程语言应用广泛,具有以下特点和特点:1.语...
10
Java全解析:跨平台编程语言的魅力与多...
java是什么Java是一种功能强大的编程语言,被称为“一次编写,随处运行”模型...