加入收藏 | 设为首页 | 会员中心 | 我要投稿 PHP编程网 - 湛江站长网 (https://www.0759zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 创业 > 正文

C++中链表操作实例分析

发布时间:2021-01-08 07:30:55 所属栏目:创业 来源:网络整理
导读:副标题#e# 链表概述 链表是一种常见的重要的数据结构。它是动态地进行存储分配的一种结构。它可以根据需要开辟内存单元。链表有一个“头指针”变量,以head表示,它存放一个地址。该地址指向一个元素。链表中每一个元素称为“结点”,每个结点都应包括两个

   图4:有N个节点的链表,删除第一个节点
   结合原链表和删除后的链表,就很容易写出相应的代码。操作方法如下:
   1、你要明白head就是第1个节点,head->next就是第2个节点;
    2、删除后head指向第2个节点,就是让head=head->next,OK这样就行了。
    ---->[1]---->[2]---->[3]...---->[n]---->[NULL](原链表)
    head   1->next  2->next  3->next   n->next

    ---->[1]---->[3]...---->[n]---->[NULL](删除后链表)
   head   1->next  3->next   n->next

   图5:有N个节点的链表,删除中间一个(这里图示删除第2个)
   结合原链表和删除后的链表,就很容易写出相应的代码。操作方法如下:
   1、你要明白head就是第1个节点,1->next就是第2个节点,2->next就是第3个节点;
   2、删除后2,1指向第3个节点,就是让1->next=2->next。

   删除指定学号的节点的函数为:

/*
==========================
 功能:删除指定节点
  (此例中是删除指定学号的节点)
 返回:指向链表表头的指针
==========================
*/
struct student *Del (struct student *head,int num)
{
    struct student *p1;        //p1保存当前需要检查的节点的地址
    struct student *p2;        //p2保存当前检查过的节点的地址
    if (head == NULL)        //是空链表(结合图3理解)
    {
        printf ("nList is null!n");
        return head;
    }

    //定位要删除的节点
    p1 = head;
    while (p1->num != num && p1->next != NULL)    //p1指向的节点不是所要查找的,并且它不是最后一个节点,就继续往下找
    {
        p2 = p1;            //保存当前节点的地址
        p1 = p1->next;        //后移一个节点
    }

(编辑:PHP编程网 - 湛江站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

热点阅读