C语言中链表怎么删除结点?
来源:互联网 发布:淘宝买处方药货到付款 编辑:程序博客网 时间:2024/06/10 04:17
第一个方法:
/*根据姓名删除链表的中的学生记录*/void deleteByName(struct STUDENT * head){ struct STUDENT *p,*q; char name[20]; if(head==NULL) { printf("链表为空。\n"); return; } printf("请输入要删除的学生的姓名:"); scanf("%s",name); for(p=head->next,q=head;p!=NULL;p=p->next,q=q->next) { if(strcmp(p->name,name)==0) { q->next=p->next; } } if(p==NULL) printf("要删除的学生不存在。"); else free(p);}
这个方法主要是 q->next=p->next ,然后释放 p结点所占的内存空间。
第2个方法:
/***************函数功能:删除出勤学生姓名返回:指向链表表头的指针/***************/struct student * del_message(struct student* head){ FILE* fp; struct student* pointer,*temp; //p指向新的结点 temp指针为临时结点 InputBox(stu.ID,11,"请输入要删除学生姓名的学号"); fp=fopen("student.txt","wb+"); pointer=head->next; //从头结点开始遍历指向下一个节点 while(pointer!=NULL) //如果遍历不到空数据的话就一直遍历 { if(strcmp(pointer->ID,stu.ID)==0) //找到要删除的结点 { temp=pointer; //将找到的结点赋值给临时temp结点变量 pointer=pointer->next; // 将p结点的下一个节点 赋值给p结点 free(temp); //释放临时temp结点所占内存 while(pointer!=NULL) //将剩下的结点写入 { fwrite(pointer,sizeof(struct student),1,fp); pointer=pointer->next; } break; } fwrite(pointer,sizeof(struct student),1,fp); //开始遍历链表结点,并写入文件 pointer=pointer->next; //p指针指向新的结点(下一个结点) } fclose(fp); outtextxy(220, 200, "删除出勤学生成功!"); return head;}
这个方法先找到p结点,也就是要删除的结点,然后将其赋值给一个临时的temp结构变量,然后p结点的下一个结点赋值给p结点,最后释放temp结点所占用的内存。
temp=pointer; //将找到的结点赋值给临时temp结点变量
pointer=pointer->next; // 将p结点的下一个节点 赋值给p结点
free(temp); //释放临时temp结点所占内存
第二个方法是是从文件中读写链表结构。
不知道两种方法是否一样?
0 0
- C语言中链表怎么删除结点?
- 单链表结点删除 C语言实现
- C语言删除链表中的结点
- C语言 排序二叉树 删除某个结点
- C语言实现单链表节点的删除(带头结点)
- 单链表插入和删除结点c语言的实现
- C语言--单链表创建、求长度、查找前驱结点、删除结点
- C语言实现非循环双链表节点的删除(带头结点尾结点)
- 学习笔记——C语言实现单链表的基本操作:创建、输出、插入结点、删除结点、逆序链表
- 学习笔记——C语言实现单链表的基本操作:创建、输出、插入结点、删除结点、逆序链表
- C语言实现单链表(带头结点)的基本操作(创建,头插法,尾插法,删除结点,打印链表)
- C语言实现单链表(带头结点)的基本操作(创建,头插法,尾插法,删除结点,打印链表)
- C语言中怎么删除数组中相同的数字
- C语言及程序设计进阶例程-18 链表中结点的插入和删除
- C语言实现带头结点的链表的创建、查找、插入、删除
- C语言实现带头结点的链表的创建、查找、插入、删除操作
- C语言实现链表之单向链表(六)删除头结点
- C语言实现链表之单向链表(八)删除尾结点
- JQuery EasyUI 引用加载分析、文件分析
- C语言链表中数组实现数据选择排序,升序、降序功能主要难点
- Android系统自带的一个图片剪裁页面裁剪后有黑边问题
- C语言中怎么将文件里的数据创建到(读到)链表中?
- 如何鉴别一款App是Web App还是Native App?
- C语言中链表怎么删除结点?
- IOS Dev Intro - Key-Value Observing
- C语言中链表任意位置怎么插入数据?然后写入文件中?
- TFTP在linux上使用
- MathType怎么隐藏标尺
- J2SE(十七)Java之集合框架(2)队列
- C语言怎么将用户账号密码写入文件实现登录注册功能?
- C语言中不同函数之间怎么传值?
- java环境配置