zoukankan      html  css  js  c++  java
  • c/cpp语言链表连接部分详解

    核心代码:
    ①pTail->next = pNew;
    ②pNew->next = NULL;
    ③pTail = pNew;

    设结构体名称为 struct ST;

    注:方框代表分配的内存空间,椭圆代表结构体内部定义的指针,单箭头表示复制给指向部分,双箭头代表地址指向的内存空间。

    链表链接可以分为图示两大部分:
    一.首节点指向第二个节点

    pHead = (struct ST *)malloc(struct ST);
    pTail = pHead;
    pHead指向已分配的内存空间,将pHead保存的地址复制给pTail,则pTail与pHead指向相同的内存空间;
    pNew = (struct ST *)malloc(struct ST);
    pNew指向新的内从空间;
    pTail->next = pNew;
    将pNew保存的内存地址复制给pTail->next,则pTail->next指向pNew相同的内存空间。
    pNew->next = NULL;
    新开辟的内存空间中保存的内存地址指向空;
    pTail = pNew;
    将pNew保存的地址复制给pTail,则1号线断开,pTail沿2号线指向新的内存空间。
    整个过程下来,pNew失去作用,用作下一次分配空间。

    二.除首节点之外的节点连接

    经过第一步操作,pTail指向第二个节点且第二个节点内保存的指针指向空;
    pNew = (struct ST *)malloc(struct ST);分配新的内存空间;
    通过pTail->next = pNew;将第二个节点的指针指向pNew指向的内存空间,即方向3换为4;
    然后再通过pNew->next = NULL;将新节点中的指针指向空;
    通过pTail = pNew;将pTail再次指向新开辟的内存空间,即方向5换为6;
    这样一来,pTail就始终指向最后一个节点,pNew不断用来存放新申请空间的地址,然后在不断被替代,形成节点环环相扣。

    (个人见解,如有不到之处欢迎指正。)

  • 相关阅读:
    第17章 委托
    第16章 数组
    第15章 枚举类型和位标志
    第14章 字符、字符串和文本处理
    第13章 接口
    第12章 泛型
    第10章 属性
    第11章 事件
    内部类(转载)
    Collections.sort的三种用法
  • 原文地址:https://www.cnblogs.com/maskerk/p/7348955.html
Copyright © 2011-2022 走看看