码迷,mamicode.com
首页 > 其他好文 > 详细

线性表以及线性表的各种操作

时间:2019-05-31 01:19:00      阅读:122      评论:0      收藏:0      [点我收藏+]

标签:gravity   log   blog   font   存储位置   flow   存储器   define   nbsp   

1.线性表的定义

若将线性表记为(a1,...,ai-1,ai,ai+1,...,an),则表中ai-1领先于ai,ai领先于ai+1,称ai-1是ai的直接前驱元素,ai+1是ai的直接后继元素。
线性表元素的个数n(n>=0)定义为线性表的长度,当n=0时,称为空表。
注:线性表只有一个前驱和后驱,而且线性表是最常用且最简单的一种数据结构。

2.线性表的顺序存储结构

线性表的顺序存储结构,指的是一段地址连续的存储单元依次存储线性表的数据元素。

线性表的顺序存储结构如图所示:

 技术图片

 

2.1地址计算方法

用数组存储顺序表意味着要分配固定长度的数组空间,分配的数组空间大于等于当前线性表的长度,数据元素的序号和存放它的数组下标之间存在对应关系:

技术图片

存储器的每个存储单元都有自己的编号,这个编号称为地址。

每个数据元素都需要占用一定的存储单元空间的,假设占用的是c个存储单元,对于第i个数据元素ai存储位置为(LOC表示获得存储位置的函数):

LOC(ai) = LOC(a1) + (i-1)*c

(1)线性表的动态分配顺序存储结构:

#define LIST_INIT_SIZE 100 //线性表存储空间的初始分配量
#define LISTONCREMENT 10 //线性表存储空间的分配增量
typedef struct{
ElemType *elem; //存储空间基地址
int length; //当前长度
int listsize; //当前分配存储容量
}SqList;

(2)顺序表的初始化操作:

Status InitList(SqList &L)
{
L.elem=(ElemType *)malloc(LIST_INIT_SIZE*sizeof(ElemType));
if(!L.elem)
exit(OVERFLOW);
L.length=0;
L.listsize=LIST_INIT_SIZE;
return OK;
}

 

 

 

线性表以及线性表的各种操作

标签:gravity   log   blog   font   存储位置   flow   存储器   define   nbsp   

原文地址:https://www.cnblogs.com/gzh666666/p/10952729.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!