• 链表的删除


    函数deletelist从以head为头指针的链表中删除成绩低于min_score的学生,并返回结果链表的头指针。

     1 struct stud_node *deletelist( struct stud_node *head, int min_score ) {
     2     //删除成绩低于min_score的学生
     3     struct stud_node *p, *q;
     4     while (head && head->score<min_score) {
     5         q = head;
     6         head = head->next;
     7         free(q);
     8     }
     9     if ( head == NULL ){  //为防止head->next为空, 即只有链表只有一个元素的情况
    10         return NULL;
    11     } 
    12     p = head;
    13     q = head->next;
    14     while ( q ){  //如果q不是空
    15         if ( q->score<min_score ){  //如果q指向的score小于
    16             p->next = q->next;  //令p->next(即head->next) = q->next
    17             free(q);
    18         }
    19         else {
    20             p = q;  //若没有符合的元素, p指针往后移一位
    21         }
    22         q = p->next;  //q指针一定位于p->next
    23     }
    24     return head;
    25 }

    一样要struct stud_node *p, *q, *head(存放了整个链表的指针);

    一开始, 先判断head的元素是不是要找的元素, 如果是, 做一个指针赋值, free掉此元素

    如果head不是要找的元素, 让p = head, q = head->next; 由这两个指针操纵位置和删除;

    照例画图理解会好一点

  • 相关阅读:
    怎么样从多列的DataTable里取需要的几列
    .net core 生成二维码
    sql server2012卸载
    github实用的搜索小技巧
    c# 中的索引
    IOC
    Python基础-while
    Python基础-判断闰年
    Python基础-while奇数和
    Python基础-奇偶判断调用函数
  • 原文地址:https://www.cnblogs.com/zhengxin909/p/12001413.html
Copyright © 2020-2023  润新知