zoukankan      html  css  js  c++  java
  • 线性表之链式存储结构

    线性表的顺序存储结构要求逻辑关系上相邻的元素在物理位置上也相邻,这样方便了随机存取,但是在插入和删除元素时,需要移动大量元素,而线性表的链式存储则不要求逻辑上相邻的元素在物理位置上也相邻,因此它没有顺序存储结构的可随机存取的优点,不过在插入和删除元素时比较方便。

    单链表

    单链表可由头指针唯一确定,在C语言中可用“结构指针”来描述

       1: typedef struct Node {
       2:     ElemType     data;
       3:     struct Node *next;
       4: }Node, *LinkList;

    有时,我们会在单链表的第一个结点之前附设一个结点,称之为头结点。头结点的数据域可以不存储任何信息,也可以存储如链表的长度等一些附加信息。头结点的指针域指向第一个结点,如果线性表为空,则头结点的指针域为NULL。

    循环链表

    表中最后一个结点的指针域指向第一个结点,整个链表形成一个环。

    循环链表的操作与单链表基本一致,差别在于算法中的循环条件不是p或者p->next是否为空, 而是他们是否等于头指针。

    有时候,在循环链表中设立尾指针而不设头指针,可以使某些操作简化。


    双向链表

    在双向链表的结点中有两个指针域, 其一指向直接后继,另一指向直接前驱,在C语言中可描述如下:

       1: typedef struct Node {
       2:     ElemType     data;
       3:     struct Node *next, *prev;
       4: }Node, *LinkList;

    和单链表的循环链表类似,双向链表也可以有循环链表。

  • 相关阅读:
    numpy.clip(a, a_min, a_max, out=None)(values < a_min are replaced with a_min, and those > a_max with a_max.)
    pytorch使用过程中遇到的一些问题
    conda管理包
    python argparse模块
    pytorch中设定使用指定的GPU
    Linux下dpkg的用法
    python pdb模块
    ubuntu SSH 连接、远程上传下载文件
    Linux中执行shell脚本命令的4种方法总结
    python linux安装anaconda
  • 原文地址:https://www.cnblogs.com/newth/p/2478248.html
Copyright © 2011-2022 走看看