数据结构:线性表


一,线性表概述

线性表是最基本、最简单、也是最常用的一种数据结构。线性表(linear list)是数据结构的一种,一个线性表是n个具有相同特性的数据元素的有限序列。
在这里插入图片描述

线性表中数据元素之间的关系是一对一的关系,即除了第一个和最后一个数据元素之外,其它数据元素都是首尾相接的(注意,这句话只适用大部分线性表,而不是全部。比如,循环链表逻辑层次上也是一种线性表(存储层次上属于链式存储,但是把最后一个数据元素的尾指针指向了首位结点)。

(一)线性表的定义

线性表是具有相同数据类型的n(n>=0)个数据元素的有限序列,通常记为:
(a1,a2,… ai-1,ai,ai+1,…an) 其中n为表长, n=0 时称为空表。
在线性表中相邻元素之间存在着顺序关系。对于元素ai 而言,ai-1 称为 ai 的直接前趋,ai+1 称为 ai 的直接后继。即:
(1)有且仅有一个开始结点(a1),它没有直接前趋;
(2)有且仅有一个终端结点(an),它没有直接后继;
(3)除了开始结点和终端结点以外,其余的结点都有且仅有一个直接前驱和一个直接后继。

(二)线性表举例

1,简单的线性表

例如一年12个月:
(1,2,3,4,5,6,7,8,9,10,11,12)
在C或C+ +语言中我们可以把它们定义为数值型。

又例如26个英文字母表:
( a,b,c,d,e,f,g,……,x,y,z)
在C或C+ +语言中我们可以把它们定义为字符型。

2,复杂的线性表

例如我们曾经在绪论中引用的一个学生入学情况表(表2-1)可以是用户自定义的学生类型(如C语言中的结构体或数据库管理系统中的记录)。

由于表格中各记录之间存在“一对一”的关系,所以它也是一种线性表。

(三)线性表的二元组表示

Linearity =(D,R)
数据对象:D={ai ∣ 1<=i<=n n>=0}
数据关系:{< ai-1,ai > ∣ 2<=i<=n} ai-1, ai∈D
关系中< ai-1, ai >是一个序偶的集合,它表示线性表中数据元素的相邻关系,即 ai-1领先ai ,ai领先 ai+1。

(四)线性表抽象数据类型描述及定义

线性表的抽象数据类型主要包括两个方面:数据集合和该数据集合上的操作集合。线性表的常见操作有插入、删除、查找、获取元素值、设置元素值等,在java语言中,抽象数据类型通常设置成接口。线性表抽象数据类型的java接口声明如下:

package net.army.dataproject.day03;

/**
 * 作者:梁辰兴
 * 日期:2023/3/14
 * 功能:线性表接口
 */
public interface LinearList<T> {
    public T get(int i);
    public void set(int i, T t);
    public int insert(T t);
    public int insert(int i, T t);
    public T remove(int i);
    public boolean contains(T key);
    public int indexOf(T key);
    public int size();
    public void clear();
    public boolean isEmpty();
    public void printList();
}

其实,java语言中的 java.util 包中的 List 接口就是线性表,它的实现子类 ArrayList 就是顺序表,LinkedList 就是链表。

二,线性表的基本操作

线性表上的基本操作有:

(一) 创建线性表:CreateList()

初始条件:表不存在。
操作结果:构造一个空的线性表。

(二)求线性表的长度:itt LengthList(L)

初始条件:表L存在。
操作结果:返回线性表中的所含元素的个数。

(三)按值查找:SearchList(L,x),x是给定的一个数据元素。

初始条件:线性表L存在
操作结果:在表L中查找值为x的数据元素,其结果返回在L中首次出现的值为x的那个元素的序号或地址,称为查找成功; 否则,在L中未找到值为x的数据元素,返回一个特殊值表示查找失败。

(四)插入操作:InsertList(L,i,x)

初始条件:线性表L存在,插入位置正确 (1<=i<=n+1,n为插入前的表长)。
操作结果:在线性表L的第 i 个位置上插入一个值为 x 的新元素,这样使原序号为 i , i+1, … , n 的数据元素的序号变为 i+1,i+2, … , n+1,插入后表长=原表长+1。

(五)删除操作:DeleteList(L,i)

初始条件:线性表L存在,1<=i<=n。
操作结果:在线性表L中删除序号为i的数据元素,删除后使序号为 i+1, i+2,…, n 的元素变为序号为 i, i+1,…,n-1,新表长=原表长-1。

(六)显示操作:ShowList(L)

初始条件:线性表L存在,且非空。
操作结果:显示线性表L中的所有元素。

  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

梁辰兴

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值