1 #include "head.h"
 2 struct Student*del(struct Student*head,char num[N])
 3 {
 4     struct Student*p1, *p2;
 5     if (head == NULL)                  //若链表为空,则无需处理
 6     {
 7         printf("\nlist NULL!\n");
 8         return (head);
 9     }
10     p2 = p1 = head;
11     while (strcmp(num, p1->nun) != 0 && p1->next != NULL)//重要!循环终止的条件是找到
12 //了要删除的节点或者搜寻到了最后一个节点
13     {
14         p2 = p1;         //循环中若,没找到,则指针往后移一位
15         p1 = p1->next;
16     }
17     if (strcmp(num, p1->nun) == 0)   //循环结束分两种情况,1是找到,找到也分两种情况
18     {
19         if (p1 == head) head = p1->next;   //第一个节点就是我们要找到
20         else    p2->next = p1->next;         //除第一节点外的处理方式(包括末尾节点)
21         printf("delete:%s\n", p1->nun);
22         n--;       //删除一个就要成员数减一个;
23     }
24     else printf("%s not been found!\n", num);     //2,没找到怎完事
25     return head;
26 }

转载于:https://www.cnblogs.com/xinlovedai/p/6216253.html

无表头单链表的总结----删除节点相关推荐

  1. 无表头单链表增删改查操作

    1.返回单链表中第pos个结点中的元素,若pos超出范围,则返回0 2.把单链表中第pos个结点的值修改为x的值,若修改成功返回1,否则返回0 3.向单链表的表头插入一个元素 4.向单链表的末尾添加一 ...

  2. 无表头单链表的总结----输出链表

    #include"head.h" void print(struct Student* head) {struct Student *p;printf("There ar ...

  3. [LintCode] Delete Node in the Middle of Singly Linked List 在单链表的中间删除节点

    Implement an algorithm to delete a node in the middle of a singly linked list, given only access to ...

  4. 删除单链表中的重复节点(c语言版本)

    这是一道经典的面试题,下面是我的研究和举一反三,特整理如下: 分为三种情形: (1)删除有序链表的重复节点,重复节点一个都不留 (2)删除有序链表的重复节点,重复节点只留一个 (3)删除无序链表的重复 ...

  5. 用O(1)的时间复杂度删除单链表中的某个节点

    用O(1)的时间复杂度删除单链表中的某个节点 给定链表的头指针和一个结点指针,在O(1)时间删除该结点.链表结点的定义如下: struct ListNode {int m_nKey;ListNode* ...

  6. 数据结构:在一个单链表中,若删除p指向节点的后继节点,则执行的操作为:( )

    在一个单链表中,若删除p指向节点的后继节点,则执行的操作为:( ) A.q=p->next; p->next=p->next->next; free(q) B.p=p-> ...

  7. 删除单链表中的重复节点

    删除单链表中的重复节点 一.题目描述 已知单链表L,写一算法,删除其中的重复节点.(更好的阅读体验,请访问程序员在旅途) 二.分析解答 2.1 知识点分析 本题主要考察链表的相关知识点,其中包括:单链 ...

  8. 顺序表和单链表的插入删除操作时间复杂度的区别

    顺序表和单链表的插入删除操作时间复杂度的区别 最近在学习数据结构,看到如果需要用到大量的插入和删除操作,单链表的效率会高于顺序表.看到这里时内有有个疑惑,这两种数据结构的插入和删除操作的时间复杂度不都 ...

  9. 删除一个无头单链表的非尾节点(C语言)

    void DelNotTailNode(PSListNode pos) {PSListNode pNode = NULL;assert(pos);if (NULL == pos->pNextNo ...

最新文章

  1. Swish激活 hswish激活
  2. 一文带你了解Spring核心接口Ordered的实现及应用
  3. 关于c语言的字符常量
  4. [CODE FESTIVAL 2016]Distance Pairs
  5. C# 2.0 除了泛型
  6. 【在线报表设计】提升报表外观的15个技巧
  7. c语言 通过sendarp 实现mac,C#通过SendARP()获取WinCE设备的Mac网卡物理地址
  8. codeforces 476B.Dreamoon and WiFi 解题报告
  9. 程序员|刚毕业,我该去小公司还是该去大公司
  10. 你们网贷逾期最长多少时间,你们怎么处理的
  11. 【Alpha】第七次Scrum meeting
  12. ​30 岁了,依然一事无成
  13. .\Flash\Blinky.axf: Error: L6200E: Symbol SysTick_Handler multiply defined (by hal_cm0.o and blinky.
  14. 双曲函数奇偶性_第二百一十二夜:高考押题-双曲函数的性质
  15. Ubuntu Install Zhengma
  16. 视频传输---传输协议的选择
  17. 数据库系统概论 第七章 数据库设计(1)特点,概述,设计方法,规范设计方法,新奥尔良方法,用户和数据库管理员,模式,外模式,概念模式,逻辑模式,内模式,需求分析,数据项,数据流,数据存储,处理过程
  18. visio流程图工具安装包的下载和安装教程
  19. 三星 android 刷机,三星安卓手机如何刷机 三星安卓手机刷机通用方法介绍【教程】...
  20. 2019年5月1日起安卓应用应基于API 26开发

热门文章

  1. Node.js实现Excel转JSON
  2. uvm_comps.svh
  3. 能拯救你的人也只能是自己
  4. windows XP上实现python2.7.5和python3.4.3共存
  5. IIS中WEB服务器的日志存放到SQL Server 2005中
  6. Charles 抓包 从入门到精通
  7. (android实战)Service 生命周期和使用注意项
  8. 定义一个 圆形 Circle类 , 定义其中的长度length属性,定义一个求面积getArea()的方法。 并编写一个测试类,进行长度的赋值和展示,并调用求面积方法展示面积值。
  9. Android中的拍照camera和camera2
  10. Oracle设置权限和还原数据库