几种常见的线性表存储结构

1.线性表的的动态分配顺序存储结构

1 #define LIST_INIT_SIZE 100    //线性表存储空间的初始分配量
2 #define LISTINCREMENT 100    //线性表存储空间的分配增量
3 typedef struct {
4     ElemType *elem;        //存储空间基址
5     int length;            //当前长度
6     int size;            //当前分配的存储容量
7 }SqList;                //动态分配 + 顺序存储结构

2.线性表的单链表存储结构

1 typedef struct LNode{    //结点类型
2     ElemType data;        //数据域
3     struct LNode *next;    //指针域
4 }*Link;
5 typedef struct {        //链表类型
6     Link head, tail;    //分别指向线性链表的头结点和最后一个结点
7     int len;            //指示线性链表中数据元素的个数
8 }LinkList;

头指针:指示链表中第一个结点的存储位置(LNode *类型)
头结点:单链表的第一个结点前附设一个结点(数据域可存长度 LNode类型)
首元结点:第一个结点

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

1 #define MAXSIZE 1000    //链表的最大长度
2 typedef struct{
3     ElemType data;
4     int cur;
5 }Component, SLinkList[MAXSIZE];

需要用户自己实现malloc和free函数,将所有未使用过的和被删除的结点用游标链成一个备用链表

4.线性表的双向链表存储结构

1 typedef struct DulNode{
2     ElemType data;
3     struct DulNode *prior;
4     struct DulNode *next;
5 }*Dulink;
6 typedef struct {        //链表类型
7     Link head, tail;    //分别指向线性链表的头结点和最后一个结点
8     int len;            //指示线性链表中数据元素的个数
9 }DulinkList;

2015-06-27 21:21:29

时间: 2024-10-26 04:25:35

几种常见的线性表存储结构的相关文章

线性表存储结构的选择

1.从存储的角度考虑: 顺序表的存储空间是静态分布的,在程序执行之前必须明确规定它的规模,也就是说事先对MAXSIZE要有合适的设计,过大造成浪费,过小容易溢出. 点线性表的长度或存储规模难以估计时,不易采用顺序表:链表不用事先估计存储规模,链表存储密度低,(存储密度是指一个节点中数据元素所占的存储单元和整个节点所占存储单元之比.) 链式存储结构的存储密度小于1. 2.从运算的角度考虑: 在顺序表中按序号访问ai的时间复杂度是O(1),而链表中按序号查找的时间复杂度是O(n),如果经常做的运算是

数据结构与算法 1 :基本概念,线性表顺序结构,线性表链式结构,单向循环链表

[本文谢绝转载] <大纲> 数据结构: 起源: 基本概念 数据结构指数据对象中数据元素之间的关系  逻辑结构 物理结构 数据的运算 算法概念: 概念 算法和数据结构区别 算法特性 算法效率的度量 大O表示法 时间复杂度案例 空间复杂度 时间换空间案例 1)线性表: 线性表初步认识: 线性表顺序结构案例 线性表顺序结构案例,单文件版 线性表的优缺点 企业级线性表链式存储案例:C语言实现 企业级线性表链式存储案例:C语言实现 单文件版 企业级线性表链式存储案例,我的练习  线性表链式存储优点缺点

数据结构——线性表顺序存储结构

 关于线性表 线性表是零个或者多个数据元素的集合.它主要有以下三个特征: 1:线性表的数据元素之间是有顺序的. 2:线性表中数据元素个数是有限的. 3:线性表中数据元素数据类型是相同的. 关于线性表的操作,主要有 创建线性表.销毁线性表.清空线性表.将元素插入线性表.将元素从线性表中删除.获取线性表中某个位置的元素.获取线性表的长度. 线性表主要有两种存储结构: 1:线性表的顺序存储结构,c语言中的数组及采用这种方式. 2:线性表的链式存储结构. 关于顺序存储结构 定义: 是指用一段地址连续的内

线性表—顺序存储结构

线性表——顺序存储结构 我理解的顺序存储就是 存储的一组元素在内存中呈线性排列,地址相邻,就像火车一样,每个车厢都可以看做是一个元素,元素门内首尾相连且地址相邻,书看的是高一凡老师的书,学完后自己写一下总结和体会,一来加深印象,二来可以方便自己复习. 顺序存储结构似乎都是用数组来实现的,也就是以数组为核心,外面加了许多很方便的操作(函数)进行封装,然后就说这叫[顺序存储结构]——数组的深加工之后的产品 顺序存储结构的基本功能有以下几个: name:     sqlist private: T *

数据结构与算法-总结线性表顺序存储结构的优缺点

这一章节主要总结线性表顺序存储结构的优缺点. 在总结之前,我们来讨论一下线性表顺序存储结构的执行方法的时间复杂度: 存储.读取:O(1) 插入.删除:O(n) 优点: 1.无需为表中的逻辑关系增加额外的存储空间 2.可以快速存取表中对象 缺点: 1.插入和删除需要移动大量的对象 2.存储设备的碎片化 3.当线性表过大的时候,很难确定长度 版权声明:本文为博主原创文章,未经博主允许不得转载.

线性表顺序存储结构的c语言实现

线性表顺序存储结构用C实现的操作 <1>声明一个线性表的顺序存储结构 <2> 初始化顺序线性表 <3>判断是否为空 <4>清空列表 <5>返回当前长度(线性表内元素个数) <6>返回L中第i个数据元素的值,注意i是指位置,第1个位置的数组是从0开始 <7>返回L中第1个与e满足关系的数据元素的位序.若这样的数据元素不存在,则返回值为0 <8>在L中第i个位置之前插入新的数据元素e,L的长度加1 <9>

数据结构-线性表存储

线性表顺序存储结构的优缺点: 优点:1.无须为表示表中元素之间的逻辑关系而邢家额外的存储空间 2.可以快速地存取表中任一位置的元素 缺点 :1.插入和删除操作需要移动大量元素 2.当线性表长度变化较大时,难以确定存储空间的容量 3.造成存储空间的"碎片" 线性表的链式存储结构: 为了表示每个数据元素ai与其直接的后继数据元素ai+1之间的逻辑关系,对数据元素ai来说,除了存储其本身的信息之外,还需存储一个指标其直接后继的信息(即直接后继的存储位置).我们把存储数据元素信息的域称为数据域

线性表-顺序存储结构

线性表-顺序存储结构 顺序存储结构 线性表的顺序存储结构,指的是用一段地址连续的存储单元依次存储线性表的数据元素 三个属性 存储空间的起始位置:数组data,它的存储位置就是存储空间的存储位置 线性表的最大存储容量:数组的长度MaxSize 线性表的当前长度:length 数据长度和线性表长度的区别 数据长度就是数组的长度,存放线性表的存储空间的长度,存储分配后这个量一般是不变的 线性表长度是线性表中数据元素的个数,随着线性表的删除插入操作,这个长度是改变的 在任何时刻,数组的长度大于等于线性表

算法之 线性表顺序结构

package math; import java.util.ArrayList; import java.util.List; //线性表顺序结构 public class LinearTable { public int len = 0; //线性表表长度 public List list; public int currentLen = 0; //构造方法,申请一个对应长度得 线性表 public LinearTable(int i){ this.list = new ArrayList(