数据结构学习笔记——其它链表

原创 2016年01月09日 20:51:48

双向链表

单链表的结点中只有一个指向其后继结点的指针域 next,因此若已知某结点的指针为p,其后继结点的指针则为p->next ,而找其前驱则只能从该链表的头指针开始,顺着各结点的next 域进行,也就是说找后继的时间性能是O(1),找前驱的时间性能是O(n),如果也希望找前驱的时间性能达到O(1),则只能付出空间的代价:每个结点再加一个指向前驱的指针域,结点的结构为如图所示,用这种结点组成的链表称为双向链表。

prior data next
 typedef struct DuLNode
 {
   ElemType data;
   DuLNode *prior,*next;
 }DuLNode,*DuLinkList;

循环链表

  • 最后一个结点的指针域又指回第一个结点的链表。
  • 和单链表的差别仅在于,判别链表中的最后一个结点的条件不再是“后继是否为空”,而是“后继是否为头结点”。
  • 对于单链表只能从头结点开始遍历整个链表,而对于单循环链表则可以从表中任意结点开始遍历整个链表。
  • 有时对链表常做的操作是在表尾、表头进行,此时可以改变一下链表的标识方法,不用头指针而用一个指向尾结点的指针R来标识,这样很容易可以找到表尾结点和头结点,可以使得操作效率得以提高。

双向循环链表

操作特点

  • “查询”和单链表相同。
  • “插入”和“删除”时需要同时修改两个方向上的指针。

静态链表

借助数组来描述线性表的链式存储结构,结点也有数据域data和指针域next,与前面所讲的链表中的指针不同的是,这里的指针是结点的相对地址,也就是数组的下标。

特点

  • 所有数据元素均存储在一个连续的空间段,但是相邻两个元素不一定处于相邻的空间;
  • 修改指针域即可完成插入和删除操作,不需要移动数据元素,但是也不能随机访问静态链表中的元素;
    一次性分配所有存储空间,插入、删除时无需再向操作系统申请或释放空间,但也限制了最大表长。

线性表的静态单链表存储结构

 #define MAXSIZE 100 // 链表的最大长度
 typedef struct
 {
   ElemType data;
   int cur;
 }component,SLinkList[MAXSIZE];

静态链表适用于不支持“指针”的高级语言,或者最大元素数固定但插入、删除操作频繁的链表应用中。有关基于静态链表上的线性表的操作基本与动态链表相同。

版权声明:本文为博主原创文章,未经博主允许不得转载。

数据结构学习笔记(七)--图

图的存储方式一般分为邻接矩阵与邻接链表。矩阵操作简单,但稀疏图时采用链表效率更高。 图的遍历:DFS(用递归实现) BFS(用队列实现,类似于树的层序遍历!)注意什么时候使用DFS什么时候使用BFS...
  • sinat_21595363
  • sinat_21595363
  • 2016年04月13日 22:29
  • 271

链表的理解与实现[数据结构]

一、链表的定义n个节点离散分配,节点之间通过指针相连。除了首节点和尾节点之外,每个节点都只有一个前驱结点和一个后继节点。 如下图: 大家有没有发现,链表的结构很像一种交通工具,什么呢? 火车...
  • u011509781
  • u011509781
  • 2016年01月27日 14:02
  • 1961

数据结构之单链表(C++实现)

很早前就想用C++来实现那些常用的数据结构。 今天就算是个开端把。还是那句话,看的再多不如自己动手写一遍。 按照自己的思路写。首先你得熟悉那种结构的特点,然后才能谈实现。  链表是一种很常用的数...
  • complety
  • complety
  • 2012年04月08日 15:25
  • 7501

数据结构之:链表详解

11
  • lishuzhai
  • lishuzhai
  • 2016年03月31日 17:13
  • 13297

链表相关的算法题大汇总 — 数据结构之链表奇思妙想

声明:转自http://hi.baidu.com/lanxuezaipiao/item/afc616caf8393a155050585b 基本函数 1,构造节点:  //定义节点类型 struct...
  • lanxuezaipiao
  • lanxuezaipiao
  • 2014年03月25日 21:18
  • 2813

【数据结构】链表的原理及与其相关的常见面试题总结

链表是一种数据结构,和数组同级。比如,Java中我们使用的ArrayList,其实现原理是数组。而LinkedList的实现原理就是链表了。链表在进行循环遍历时效率不高,但是插入和删除时优势明显。下面...
  • jianyuerensheng
  • jianyuerensheng
  • 2016年06月06日 09:49
  • 1352

数据结构:链表(linked-list)

链表分为单向链表(Singly linked lis)、双向链表(Doubly linked list)、循环链表(Circular Linked list)。...
  • juanqinyang
  • juanqinyang
  • 2016年05月09日 11:09
  • 3233

c语言实现数据结构中的链表源代码

#include #include typedef struct LNode *List; struct LNode { int data; List next; }; struct LNo...
  • u014574317
  • u014574317
  • 2017年03月23日 09:56
  • 634

数据结构之链表学习心得

顺序表从节点之间的链接方式分我连续空间顺序表和链式顺序表,前者的实现就是在普通数组上做了封装,后者实现就是前一个节点保存后一个节点的地址。本文讨论的就是后者,链式顺序表的一个最明显的特征,就是在增减,...
  • liubo2011
  • liubo2011
  • 2016年05月01日 10:02
  • 630

数据结构概述<2>链表的基本概念

链表概述
  • bing_bing304
  • bing_bing304
  • 2014年12月02日 21:42
  • 815
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:数据结构学习笔记——其它链表
举报原因:
原因补充:

(最多只允许输入30个字)