找回密码
 注册
关于网站域名变更的通知
查看: 398|回复: 6
打印 上一主题 下一主题

线性表的顺序表示和实现

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2016-7-12 15:15 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

EDA365欢迎您登录!

您需要 登录 才可以下载或查看,没有帐号?注册

x

* S' H, e! K) t线性表的顺序表示指的是用一组地址连续的存储单元一次存储线性表的数据元素。6 S" ?; e! h& n6 t1 |- q0 w
假设线性表的每个元素需占用l个存储单元,并以所占的第一个单元的存储地址作为数据元素的存储位置LOC(ai)之间满足下列关系:6 X7 S) |: B0 ~! ?# z
LOC(ai)= LOC(ai)+l$ L* O2 q. x8 _! O( O- M
一般来说,线性表的第i个数据元素ai的存储位置为
: Z  ^4 g' q# Y2 |2 KLOC(ai)= LOC(ai)+(i-1)×l4 e0 f5 i$ M+ q
式中LOC(ai)是线性表的第一个数据元素ai的存储位置,通常称作线性表的其实位置或基地址。  Q1 |' L* k* T( y  r
线性表的这种机内表示称做线性表的顺序存储机构或顺序映像,通常,称这种存储结构的线性表为顺序表。它的特点是,为表中相邻的元素ai和ai+1赋以相邻的存储位置LOC(ai)和LOC(ai+1)。换句话说,每一个数据元素的存储位置都和线性表的起始位置相差一个和数据元素在线性表中的位序成正比的常数。由此,只要确定了存储线性表的起始位置,线性表中任一数据元素都可随机存取,所以线性表的顺序存储结构是一种随机存取的存储结构。
: }5 g- k4 O6 {0 Y* m( n0 O由于高级程序设计语言中的数组类型也有随机存取的特性,因此,通常都用数组来描述数据结构中的顺序存储结构。在此,由于线性表的长度可变,且所需最大存储空间随问题不同而不同,则在C语言中可用动态分配的一维数组,如下描述。4 O) }  v/ j; ?7 i
#define LIST_INIT_SIZE     100         //线性表存储空间的初始分配量  z9 e$ Z6 n9 _& O8 c& j
#define LISTINCREMENT   10           //线性表存储空间的分配增量& v9 }$ ^2 _1 E4 A6 M- v
typedef    struct{
7 d/ G0 v& S$ K: F8 S       ElemType       *elem;                   //存储空间基址
$ y5 k4 T1 h( h6 z0 o  q       int                length                   //当前长度
9 I# Y1 r, I6 y       int                listsize;                  //当前分配的存储容量
# N1 F8 O6 q# g& n1 c; v0 s3 p9 O}SqList;4 B: ]% |0 E7 m
在上述定义中,数组指针elem指示线性表的基地址,lenth指示线性表的当前长度。顺序表的初始化操作就是为顺序表分配一个预定义大小的数组空间,并将线性表的当前长度设为“0”。Listsize指示顺序表当前分配的存储空间大小,一旦因插入元素而空间不足时,可进行再分配,即为顺序表增加一个大小为存储LISTINCREMENT个数据元素的空间。
5 F2 |- x7 B- A3 f5 p9 n: \9 ?+ kStatus InitList——Sq(SqList 7L){
9 @4 w7 \$ h) c' J0 f7 z3 a; c1 B6 |//构造一个空的线性表L。* v- a9 ]8 z) f. F) b$ R
L.elem=(ElemType *)malloc(LIST_INIT_SIZE *sizeof(ElemType));
- ~, F  i) q+ Q8 M/ XIf(! L.elem)exit(OVERFLOW);           //存储分配失败
% H3 N# c4 N  \& m# K. T! T! @L.length=0;                                          //空表长度为0
5 Q, j. Z* S* n5 ?. b- G9 WL.listsize= LIST_INIT_SIZE;                //初始存储容量
- b4 B0 d+ A! z  t+ n7 F  r7 M0 Freturn OK;
% d( Z4 \# o( K2 ]' L) w}//InitList_Sq

该用户从未签到

2#
发表于 2016-7-13 16:59 | 只看该作者
看贴学心得,回贴是美德% U1 c, m9 ^1 l6 s" m9 ?  N

该用户从未签到

3#
发表于 2016-8-3 14:54 | 只看该作者
资源多,学习不止步,共同进步4 I0 P, ?1 c3 |+ P, n9 m

该用户从未签到

4#
发表于 2016-8-4 09:50 | 只看该作者
资源多,学习不止步,共同进步, A4 a- u! G! s" S0 H3 D& P* ?

该用户从未签到

5#
发表于 2016-8-5 08:49 | 只看该作者
支持一下,很不错哦!
7 O4 t* `0 p- m* E

该用户从未签到

7#
发表于 2016-8-9 15:47 | 只看该作者
谢谢分享,必须赞一个~* F% M/ G7 P2 |! X2 O. D* n
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

推荐内容上一条 /1 下一条

EDA365公众号

关于我们|手机版|EDA365电子论坛网 ( 粤ICP备18020198号-1 )

GMT+8, 2025-9-8 18:25 , Processed in 0.109375 second(s), 23 queries , Gzip On.

深圳市墨知创新科技有限公司

地址:深圳市南山区科技生态园2栋A座805 电话:19926409050

快速回复 返回顶部 返回列表