c语言-单链表
发布日期:2021-05-04 14:57:10 浏览次数:12 分类:技术文章

本文共 1486 字,大约阅读时间需要 4 分钟。

先看实操

#include 
#include
typedef struct student{ char number[99]; char name[99]; struct student *next;}stu; stu *head=NULL;//头指针 stu *end=NULL;//尾指针 void add(){ stu *ap; ap=(stu *)malloc(sizeof(stu));//这里创建节点 printf("输入学号和姓名"); scanf("%s",ap->name); scanf("%s",ap->number); ap->next=NULL; if(head==NULL){ //先进行判断 head=ap; end=ap; } else { end->next=ap; end=ap; }}int main(){ printf("是否添加学生(1添加,2否):"); int a; scanf("%d",&a); if(a==1){ add(); }}

这里用到的是尾插法,及在尾指针上面进行操作。

添加的原理

1.先定义头指针和尾指针来确定链表的位置(全局变量来定义更好操作)
2.然后添加一个元素进来,就使尾指针的next指针域指向这个节点(首先判断这个链表是否有元素,不然的话头尾都是空指针)
3.这里需要注意,两个指针之间使用“ a=b ”时,那么a和b存放的地址相同,及对end操作的时候就是在对最后一个元素进行操作。
使用方法
1.比如查找链表中某一个元素时

void fundname(){   	char a[999];     //这里假设按姓名去查找链表中的元素	int flag=0;	printf("请输入姓名:");	scanf("%s",a);	stu *ap=head;     //这里不能直接用head头指针,因为下面会改变这个,但是头指针不能变。	 while(ap!=NULL){      //这里只要不是最后一个元素都要进行检查	 	if(strcmp(ap->name,a)==0){      //这里进行比较,倘若相同就进行下一步	 	printf("学生的信息为:\n");  	 	printf("学号为%s\n",ap->number);		flag=1;	 }	 	ap=ap->next;   //这里是对下一个元素进行检查。	 }	 if(flag==0){   	 	printf("没有查询到学生信息\n");	 }}

就是从头指针进行挨个查找。

进行删除

void delete(){   	stu *ap=head;	stu *tmp=NULL;	printf("请输入要删除的学生的学号:");  //这里假设进行学号删除	char dnumber[99];	scanf("%s",dnumber);	while(ap!=NULL){   		if(strcmp(ap->number,dnumber)==0){   			tmp->next=ap->next; //原本的tmp是现在ap的前一个,那么本来tmp->next=ap,现在tmp->next=ap->next,所以ap被覆盖			break;		}		tmp=ap;  //记录每一次*ap变换前的位置 		ap=ap->next;	}	printf("删除成功\n");}

主要原理就是要进行覆盖

上一篇:c语言-游戏(象棋)
下一篇:c语言 - 二进制BCD解密

发表评论

最新留言

很好
[***.229.124.182]2025年03月20日 11时07分57秒

关于作者

    喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!

推荐文章

NVIDIA 的云游戏服务 GeForce NOW 无耻地忽略了Linux | Linux 中国 2019-03-03
黑吃黑——黑客组织通过黑客工具攻击其他黑客 | 每日安全资讯 2019-03-03
在 Python 调试过程中设置不中断的断点 | Linux 中国 2019-03-03
如何在 Bash 中编写函数 | Linux 中国 2019-03-03
AI 系统向自动化编码迈进 | Linux 中国 2019-03-03
使用 Jupyter Notebooks 构建一个远程管理控制台 | Linux 中国 2019-03-03
微软将举办 Azure 开放日活动,主讲 Linux 开源软件 | 新闻拍一拍 2019-03-03
使用开源可视化工具来理解你的 Python 代码 | Linux 中国 2019-03-03
【2021 ECUG Con】聚势而来,与你相约花开时 2019-03-03
硬核观察 | 有人在比特币骗局中损失了 10 个比特币 2019-03-03
初识 Python: global 关键字 | Linux 中国 2019-03-03
在 Ubuntu 17.10 上安装 AWFFull Web 服务器日志分析应用程序 | Linux 中国 2019-03-03
基于日出和日落时间自动切换到明/暗 Gtk 主题 | Linux 中国 2019-03-03
FreeDOS 的简单介绍 | Linux 中国 2019-03-03
查看一个归档或压缩文件的内容而无需解压它 | Linux 中国 2019-03-03
极致技术探索:显卡工作原理 | Linux 中国 2019-03-03
如何在 Linux 中不使用功能键在 TTY 之间切换 | Linux 中国 2019-03-03
如何在 Ubuntu 系统中添加一个辅助 IP 地址 | Linux 中国 2019-03-03
LCTT 2018:五周年纪念日 | Linux 中国 2019-03-03
【每日安全资讯】安全研究员发现39万个网站因公开的.git repo处于危险中 2019-03-03