线性表简述

线性表的定义:

是由一组数据元素组成,线性表或者是一个空表,或者可以写成{a1,a2, …ai, … ,an},其中ai是取自某个集合S的元素。当1<i<n时,数据元素ai-1称为数据元素ai的直接前趋,而称ai+1为ai的直接后继。若一个数据元素由若干个数据项组成,则该数据元素又称为记录,含有大量记录的线性表又称为文件。线性表中元素的个数称为该线性表的长度。

线性结构的特点:

1、数据元素的数据类型一致。

2、数据元素之间的相对位置呈线性关系。

3、存在唯一的一个被称做“第一个”和“最后一个”的数据元素。

4、除第一个和最后一个外,集合中每个数据元素均只有一个前驱和一个后继。

线性表可以进行如下运算:

Initiate(L):                初始化操作,设定一个线性表。

Length(L):                长度的函数,返回元素的个数。

Access(L, i):               访问第i个数据元素。

Insert(L, i, b):              在第i个元素之前,插入元素b。

Delete(L, i):               删除第i个元素。

Merge(L1, L2):             合并L1和L2,合并结果保存在L1中。

Partition(L, L1, L2):          将L拆分成L1和L2。

Search(L, b):                查找满足条件b的数据元素。

Sort(L):                   将L中所有数据元素进行排序(降序或者升序)。

Prior(L, elm):              求元素elm的前驱。

Next(L, elm):              求元素elm的后继。

Empty(L):                 判空表函数。

Clear(L):                  表置空操作。

线性表的存储结构

顺序存储结构

一、顺序存储结构的定义

在计算机中有不同的方法来表示线性表,最普通、最简单的方法是顺序映像或顺序分配,即采用一组连续的存储单元依次存储线性表中各数据元素。

顺序分配的存储结构采用向量结构:设线性表的长度为N,建立一向量V,用V[i]表示第i个分量,第i个分量是线性表第i个元素ai在计算机存储中的映像,即V[i] =ai。

若线性表中的第一个存储元素的地址为LOC[a1],每个元素占用L个存储单元,则表的第i个元素的存储地址为:

                              LOC[ai]=LOC[a1]+(i-1)*L

                              LOC[ai]=LOC[ai-1]+L

顺序存储结构的插入操作算法:

1、如果1=<i<=n+1,则插入数据元素x。反之,则退出。

2、从第n到第i个存储单元的数据元素,依次后移,腾出空位i:第n个元素送给第n+1个存储单元,将第n-1个元素送到第n个存储单元,……,直到将第i个元素送给第i+1个存储单元。

3、在空位i处插入元素x,线性表长度加1。

4、返回。

链式存储结构

一、单链表

线形链表:在线形表中每一个元素的值和该表中下一个元素的地址放在一起,这两个部分的信息组成一个结点,若干个这样的结点构成了一个线形链表。

二、循环链表

 将单链表的最后一个结点的指针域next指向它的头结点所得的链表。访问结点更加方便。

三、双向链表

若只有一个指针域,指向该结点的后继,如果要找到它的前趋结点,则需要从表头指针出发。为此要作以下扩充:

        每个结点包括三个域:一个数据域,两个指针域:一个指向前趋,称为左链域 llink,一个指向后继,称为右链域 rlink。由此形成双向链表。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值