1、循环链表

1.1 循环单链表

循环单链表和单链表的区别在于,表中最后一个结点指针不在是null,而是头指针,从而使整个链表形成一个环

  • 此时判断单链表是否为空,条件就是头结点的指针是否等于头指针
  • 此时单链表相当于一个环,而且还是一个有方向的环,头指针表明这个环的入口地址,然后顺着next指针走下去,所以循环单链表的插入、删除算法与单链表几乎一样,所不同就是表尾的操作。
  • 如果经常对表尾操作,可以设个尾指针(表名是头指针),对表头和表尾的操作时间复杂度都是0(1)

1.2循环双链表

相对于双链表,不同的是循环双链表的头结点prior还要指向表尾,尾部的next还要指向头结点,其他都一样,循环双链表相当于有两个环,两个不同方向的环,头指针(表名)告诉我们这个循环双链表的入口地址,我们可以向两个方向操作数据

  • 判断循环双链表是否为空,只要头结点的prior和next都等于头指针

2、静态链表

静态链表没有通过指针来实现,是通过数组来实现线性表的链式存储结构
描述:

typedef int ElemType;
#define  MaxSize 50
typedef struct {ElemType data;int next;
}SLinkList[MaxSize];
  • 静态链表的结点也有数据域和指针域,但指针域存放的不再是地址,而是结点的相对地址(就是数组下标)
  • 因为是数组来描述,所以静态链表也要预先分配一块连续的内存空间
  • 数组第一个元素不存放数据(和头结点和相似),他的指针域存放第一个元素所在的数组下标
  • 静态链表的结束标志有很多,上图中-1就是,因为数组下标不可能为-1
  • 静态链表对不支持指针的高级语言(Basic)使用很方便

线性表----循环链表和静态链表相关推荐

  1. 线性表详解(静态链表、单链表、双向链表、循环链表)

    目录 申明 1. 线性表的定义 2. 线性表的抽象数据类型 3. 线性表的顺序存储结构 3. 1 顺序存储定义 3. 2 顺序存储方式 3. 3 数据长度与线性表长度区别 3. 4 地址计算方法 4. ...

  2. 线性表的应用 —— 单链表

    线性表的应用 -- 单链表 链表是线性表的链式存储方式,逻辑上相邻的数据在计算机内的存储位置不一定相邻,可以给每个元素都附加一个指针域,指向下一个元素的存储位置. 像这样: 从图中可以看出,每个节点都 ...

  3. 数据结构和算法详解(二)——线性表(数组、链表、栈、队列)

    一.数组 线性表:   线性表就是数据排成像一条线一样的结构.每个现行表上的数据最多只有前和后两个方向.常见的线性表结构:数组,链表.队列.栈等. 什么是数组: 数组(Array)是一种线性表数据结构 ...

  4. 线性表(二)——链表

    文章目录 链表(Linked Table) 1.单链表(singly linked list) 元素的构成 链表的基本操作 链表的创建 遍历操作 查找操作 插入操作 删除操作 链表(Linked Ta ...

  5. 数据结构(算法)-线性表2(单链表)

    为什么80%的码农都做不了架构师?>>>    /** 单链表 双链表1,空的线性表setNull(L) 2,insert 加入元素 3,根据位置查找元素 4,查找所有元素 5,删除 ...

  6. PHP数据结构之三 线性表中的单链表的PHP实现

    线性表的链式存储:用一组任意的存储单元存储线性表中的数据元素.用这种方法存储的线性表简称线性链表. 链式存储线性表的特点:存储链表中结点的一组任意的存储单元可以是连续的,也可以是不连续的,甚至是零散分 ...

  7. 线性表基本操作,单链表的建立(头插法,尾插法)、插入、删除、遍历操作的实现(c++ 数据结构 实验二)

    大学数据结构课程的实验题目,掌握线性表的链接存储结构,用c++语言描述 一.实验要求 1.分别用头插法和尾插法建立一个含有若干结点的单链表 2.对已建立的单链表进行插入.删除.遍历输出等操作 二.代码 ...

  8. C语言线性表之循环单链表

    #include<stdio.h> #include<stdlib.h>int typeOfLinkList;typedef struct LNode{int data;str ...

  9. 理论基础 —— 线性表 —— 循环链表

    [概述] 循环链表的构建与单链表十分相似,唯一不同的是,对于链表的表尾,需要将原来的 NULL 改为 first 以下仅给出构造函数的实现 [构造函数] 1.无参构造函数 生成一个头结点,让头指针指向 ...

最新文章

  1. 人脑是怎么防止梯度消失和梯度爆炸的?
  2. 软件工程-第三次作业
  3. Xshell Linux常用命令及vim与权限修改等常见问题
  4. JavaScript中的函数
  5. 浅谈Jquery中的bind()、live()、delegate()、on()绑定事件方式
  6. 理解C#语言中的类型转换----初学者的理解,请大神指教
  7. 【线段树】蝴蝶与花(P6859)
  8. mysql 远程服务器返回错误404_远程服务器返回异常: (404) 未找到
  9. 二代CMS旅游网站程序国际版开发中(支持英文、法文等),支持拓展语言包
  10. python中的array函数作用_Python中的Array | 数组2(简介和功能)
  11. c语言加密shell脚本,shell脚本加密
  12. Swift - UIBezierPath
  13. javaScript笔记整理(一)
  14. Spring学习(二)代理模式(静态代理、动态代理)、Spring AOP
  15. 字符串通配符(递归)
  16. C语言的主要用途以及前景开展
  17. 在linux系统下做软raid教程
  18. 操作手册与用户手册的区别
  19. html怎么画虚线空心圆,PS怎么画虚线圆圈 一个工具轻松搞定
  20. FFMPEG将视频切片成ts文件并对ts文件进行ASE加密,并合并成M3U8操作方法

热门文章

  1. 前端微信小程序实战篇
  2. fatal error C1083: 无法打开预编译头文件:“Debug\a.pch”:No such file or directory
  3. Gitlab 项目上传
  4. oracle快速插入大量数据
  5. 程序猿果真有前端后端client吗
  6. 【Centos】yum 安装mariaDB
  7. SpringMVC学习笔记整理
  8. html中评论应该怎么写,HTML-评论
  9. jenkins修改pom文件_动手实践:美化 Jenkins 报告插件的用户界面
  10. linux odbc连接数据库失败,在Linux中使用RODBC连接到SQL Server时出错