
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");}
主要原理就是要进行覆盖
发表评论
最新留言
很好
[***.229.124.182]2025年03月20日 11时07分57秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
黑吃黑——黑客组织通过黑客工具攻击其他黑客 | 每日安全资讯
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
基于日出和日落时间自动切换到明/暗 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