博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
数据结构学习笔记(二)
阅读量:6898 次
发布时间:2019-06-27

本文共 1417 字,大约阅读时间需要 4 分钟。

一、线性表

1.线性表的存储结构

分类:

* 顺序存储结构——顺序表
* 链式存储结构——链表

比较:

顺序表:

* 可以随机访问
* 占用连续空间,存储分配只能预先进行,即静态分配。一旦分配好了,在对其操作过程中不变
* 插入操作需要移动多个元素

链表

* 不可以随机访问
* 不需要占用连续空间,动态分配。即在要创建新结点的时候再进行空间划分。
* 插入操作不需要移动多个元素
* 每个结点划一部分空间存储指向下一结点位置的指针,故存储空间利用率比顺序表稍低

2.链表的5中形式

单链表

头结点可带、可不带。

不带头结点的,head指针则指向开始结点,当head为null时,链表为空。

带头结点的,head指针始终不为空。head -> next 为null时,链表为空。

头结点不存储信息,只是作为标记

clipboard.png

双链表

clipboard.png

双链表就是在单链表结点上增添了一个指针域,指向当前结点的前驱。这样就可以方便的由其后继来找到其前驱,而实现输出终端结点到开始结点的数据序列。

同样,双链表也分为带头结点的双链表和不带头结点的双链表,情况类似于单链表。带头结点的双链表 head->next 为null

的时候链表为空。不带头结点的双链表head为null的时候链表为空。

循环单链表

clipboard.png

只要将单链表的最后一个指针域(空指针)指向链表中第一个结点即可(这里之所以说第一个结点而不说是头结点是因为,如果循环单链表是带头结点的则最后一个结点的指针域要指向头结点;如果循环单链表不带头结点,则最后一个指针域要指向开始结点)。

带头结点的循环单链表当head等于head->next时链表为空;

不带头结点的循环单链表当head等于null时链表为空。

循环双链表

clipboard.png

循环双链表的构造源自双链表,即将终端结点的nnext指针指向链表中第一个结点,将链表中第一个结点的prior指针指向终端结点。

带头结点的循环双链表当head->next和heaad->prior两个指针都等于head时链表为空。

不带头结点的循环双链表当head等于null的时候为空。

静态链表

这种链表借助一维数组来表示,例如:

clipboard.png

线性表的基本操作

线性表的定义

#define MAX 100   //这里定义一个整型常量MAX,值为100###线性表的定义#define MAX 1001. 顺序表的结构定义typedef struct{    int data[MAX];    //存放顺序表元素的数组(默认是int型,可根据题目要求将int换成其他类型)。存放顺序表的长度。    int length;    //存放顺序表的长度。} Sqlist;  //顺序表类型的定义。

clipboard.png

单链表结点定义

typedef struct LNode{    int data;    //data中存放结点数据域(默认是int型)。    struct LNode *next;    //指向后继结点的指针。}LNode;//定义单链表结点类型。

clipboard.png

双链表结点定义

typedef struct DLNode{    int data;     //data中存放结点数据域(默认是int型)    struct DLNode *prior;    //指向后继结点的指针    struct DLNode *next;    //指向前驱结点的指针}DLNode;  //定义单链表结点类型

clipboard.png

转载地址:http://escdl.baihongyu.com/

你可能感兴趣的文章
Android 数据库管理— — —更新数据
查看>>
cmd命令
查看>>
算法笔记 --- Counting Sort
查看>>
LeetCode 88 Merge Sorted Array
查看>>
HDU 3974 Assign the task
查看>>
Java并发之(3):锁
查看>>
11.2JS笔记
查看>>
oracle11G 命令【导库数量对比】
查看>>
快速优化yum (for centos5.5)
查看>>
Qt学习之路_8(Qt中与文件目录相关操作)
查看>>
第三章数据结构小结
查看>>
Linux FTP的安装与配置
查看>>
Dynamic Host Configuration Protocol (DHCP) Services
查看>>
Android的Style的使用
查看>>
vs2010中设置qt环境的智能识别方案
查看>>
ubuntu中查看已安装软件包的方法
查看>>
安装戴尔OMSA
查看>>
开博啦
查看>>
CF 816B Karen and Coffee【前缀和/差分】
查看>>
ZOJ 1081 Points Within( 判断点在多边形内外 )
查看>>