美文网首页
链表存储结构

链表存储结构

作者: Longjune | 来源:发表于2021-03-21 16:26 被阅读0次

代码

typedef struct Node
{
    ElemType data;
    struct Node *next;
}Node,*Linklist;

拆分

这一整个代码可以看成是三个内容的组合

结构体类型(struct)

这个部分其实就是

struct Node //结构体类型名
{
    ElemType data;  //数据域
    struct Node *next;     //指针域
}

表示定义了一个叫Node的结构体类型

用户自定义类型(typedef )

其中一部分是用户自定义类型的

typedef struct Node //结构体类型名
{

}Node,*Linklist;    //新结构体名1,*新结构体名2;

表示现在通过typedef
将叫Node的结构体类型重命名为Node
并且还有一个指向Node结构体类型的指针叫做Linkist

也就是相当于 Node *p==Linklist p
因此,在具体使用指针中两个变量有不同的使用方法:

  • Node p
    p不是指针,引用要用‘.’
    p.data;
    p.next;
  • Linklist l;
    l是指针,引用要用‘->’
    l->data;
    l->next;

并且,在链表中,虽然Node *和Linklist的类型是等价的
但一般习惯让Linklist表示某个单链表的头指针变量
而让Node *表示只想单链表结点的指针

要点

对struct Node *next的理解

1.struct Node在在结构体定义中能使用
是因为第一行的定义就已经表示有这个结构体类型名了
所以在即使在里面也可以重复使用

2.表示有个指向Node类型的指针叫next,因为next要表示下一个结点(Node)的地址,类型一定要一致
同时它也是结构体变量所占内存单元的起始地址

next怎么指向下一结点

因为next作为指针
它的根本意义是地址
并且是所在的结构体变量的新的随机的地址

但是next不仅作为指针,它还具有结构体类型
在next中还有新的data、next
通过next的地址指引到新的结构体(结点Node)
就完成了指向下一结点的动作

相关文章

  • 数据结构——线性表

    线性表分为顺序存储结构和链式存储结构(单链表,静态链表,循环链表,双向链表)。 单链表(**一种动态结构,所占空间...

  • 数据结构和算法

    1、数组和链表区别(1)物理存储结构不同。链表与数组在计算中存储元素采用不同的存储结构,数组是顺序存储结构,链表是...

  • C语言实现链表(链式存储结构)

    链表(链式存储结构)及创建 链表,别名链式存储结构或单链表,用于存储逻辑关系为 "一对一" 的数据。与顺序表不同,...

  • 鹘仑吞枣1:LinkedList

    实现原理 LinkedList是基于链表实现的,链表是一种线性的存储结构,是一个双向链表,链表中的存储结构除了记录...

  • hashMap源码分析

    java基本存储结构:数组和链表 hashMap就是数组加链表的存储结构。 put源码: public V put...

  • 线性链表

    线性链表 线性表的顺序存储结构:顺序表线性表的链式存储结构:线性链表 线性表的链式存储所占存储空间大于顺序存储。 ...

  • HashMap源码解析(直击面试焦点问题)

    HashMap存储结构 HashMap采用数组+链表这种存储结构(为解决链表过长导致的遍历效率低,jdk1.8之后...

  • 你真的知道数据结构吗?

    前言: 普及一下顺序存储结构与链表存储结构。对应八大数据结构的数组和链表。 1)顺序存储结构的内存地址一定是连续的...

  • 线性表元素插入和删除

    单链表(链式存储结构)插入 单链表(链式存储结构)删除 有头结点的单链表在开始结点前插入元素等同在头结点后插入元素...

  • 数据结构--链表

    面试C++常考的问题:链表和数组有什么区别呢? 1、链表是链式存储结构,数组是顺序存储结构。2、链表通过指针连接元...

网友评论

      本文标题:链表存储结构

      本文链接:https://www.haomeiwen.com/subject/ltxocltx.html