数据结构-王道2017-第2章 线性表

1. 线性表的定义和基本操作

1.1 线性表的定义

线性表电话i具有相同数据类型的n(n >= 0)个数据元素的有限序列。其中n为表长,当n=0时,该线性表是一个空表。若用L命名线性表,则一般表示为:

L=(a1,a2,a3...ai,ai+1...an)

其中,a1是唯一的第一个数据元素,又称为表头元素;an是唯一的最后一个数据元素,又称为表尾元素。除第一个元素外,每个元素有且仅有一个直接前驱。除最后一个元素外,每个元素有且仅有一个直接后继。以上就是线性表的逻辑特性,这种线性有序的逻辑结构正是线性表名字的由来。

表中的个树有限

表中元素具有逻辑上的顺序性,在序列中各元素排序有先后顺序。

表中元素都是数据元素,每一个元素都是单个元素。

表中元素的数据类型都相同。这意味着每一个元素占有相同大小的空间。

表中元素具有抽象性。即仅讨论元素间的逻辑关系,不考虑元素究竟表示什么内容。

注意:线性表是一种逻辑结构,表示元素之间一对一的相邻关系。顺序表和链表是指存储结构,两者属于不同层面的概念,因此不要将其混淆。

1.2 线性表的基本操作

一个数据结构的基本操作是指其最核心、最基本的操作。其他较复杂的操作可以通过调用其基本操作来实现。线性表的主要操作如下:

InitList(&L)  : 初始化表。构造一个空的线性表。

Length(L) : 求表长。返回线性表L的长度,即L中数据元素的个数。

LocateElem(L,e): 按值查找操作。在表L中查找具有给定关键字值的元素。

GetElem(L,i): 按位查找操作。获取表L中第i个位置的元素的值。

ListInsert(&L,i,e): 插入操作。 在表L中第i个位置上插入指定元素e。

ListDelete(&L,i,&e): 删除操作。 删除表L中第i个位置的元素,并用e返回删除元素的值。

PrintList(L): 输出操作。按前后顺序输出线性表L的所有元素值。

Empty(L) : 判空操作。若L为空表,则返回true,否则返回false.

注意:基本操作的实现取决于采用哪一种存储结构,存储结构的不同,算法的实现也不同。

线性表的定义要求为有限序列,并且具有逻辑上的联系。

集合中个元素没有前后驱关系,因此不是线性表。

邻接表是一种存储结构,而线性表是一种逻辑结构。

时间: 2024-12-20 13:53:24

数据结构-王道2017-第2章 线性表的相关文章

《数据结构与算法》第二章 线性表

线性表 定义: 由n个特性相同 数据元素(即可有很多数据项)构成的有限序列,同时相邻数据元素之间存在 序偶 关系. 线性表中元素个数就是 表长 . 特点: ·存在唯一一个被称为 “第一个” 的数据元素(线性起点.起始结点): ·存在唯一一个被称为 “最后一个” 的数据元素(线性终点.终端结点): ·除第一个以外,结构中的每个数据元素均 只有一个前驱 : ·除最后一个外,结构中的每个数据元素均 只有一个后继 . 顺序表示和实现 线性表的顺序表示指的是用一组地址连续的存储单元一次存储线性表的数据元素

《大话数据结构》笔记(2)--线性表的顺序存储结构

线性存储结构的Java实现代码: https://github.com/Lyu0709/data-structure/tree/master/src/com/coding/basic/array 第三章 线性表 定义 数学语言 若将线性表记为(a1, ..., ai-1, ai, ai+1, ..., an),则表中ai-1领先于ai,ai领先于ai+1,称ai-1是ai的直接前驱元素,ai+1是ai的直接后继元素.当i=1,2,..,n-1时,ai有且仅有一个直接后继,当n=2,3,...,n

数据结构期末复习第二章线性表

第二章:线性表 1.线性结构的基本特征答:线性结构是若干数据元素构成的有序(次序)集① 集合中必存在唯一的一个“第一元素”:② 集合中必存在唯一的一个 “最后元素”:③ 除第一元素之外,均有 唯一的前驱:④ 除最后元素之外,均有 唯一的后继. 2.线性表的顺序存储结构和链式存储结构分别是______.(  D )   A. 顺序存取的存储结构.顺序存取的存储结构  B. 顺序存取的存储结构.随机存取的存储结构   C. 随机存取的存储结构.随机存取的存储结构  D. 随机存取的存储结构.顺序存取

第2章 线性表《C#数据结构和算法》

( 1)除第一个位置的数据 元素外,其它数据元素位置的前面都只有一个数据元素:( 2)除最后一个位置的 数据元素外,其它数据元素位置的后面都只有一个元素.也就是说,数据元素是 一个接一个的排列.因此,可以把线性表想象为一种数据元素序列的数据结构. 2.1.1 线性表的定义 线性表(List) 线性表的接口如下所示. public interface IListDS<T> { int GetLength(); //求长度 void Clear(); //清空操作 bool IsEmpty();

【学习总结】《大话数据结构》- 第3章-线性表

[学习总结]<大话数据结构>- 总 启示: 线性表:零个或多个数据元素的有限序列. 目录 3.1 开场白 3.2 线性表的定义 3.3 线性表的抽象数据类型 3.4 线性表的顺序存储结构 3.5 顺序存储结构的插入与删除 3.6 线性表的链式存储结构 3.7 单链表的读取 3.8 单链表的插入与删除 3.9 单链表的整表创建 3.10 单链表的整表删除 3.11 单链表结构与顺序存储结构优缺点 3.12 静态链表 3.13 循环链表 3.14 双向链表 3.15 总结回顾 3.16 结尾语 -

数据结构之第二章线性表之静态链式存储

1--特点:用一维数组来描述线性表,用游标代替指针指示节点在数组中的相对位置.不设“指针”类型的高级语言中适用链表结构. 2--线性表的静态链式存储结构 ////  静态单链表.h//  单链表的静态存储//// 6 //  Copyright (c) 2014年 dashuai. All rights reserved.// #ifndef SLIST_H#define SLIST_H#include <stdio.h>#include <stdlib.h> #define MA

数据结构之第二章线性表之链式存储

1~~特点:逻辑上相邻的元素,他的物理位置不一定相邻,其实几乎是不像邻的.表中的元素只能顺序访问,插入,删除等操作只需修改指针而不需要移动元素,存储空间利用率高,表的容量可以动态变化.适合个数变化大的情况. 2--链式存储`的存储结构 typedef struct Node{ int data; struct Node *next; }NODE,*PNODE; 3~~线性表的基本操作 (1)线性表的的  插表头  建立算法 ” 插表头“方式得到的线性链表,元素存储的顺序和输入顺序相反,这与栈的特

数据结构之第二章线性表

1 线性表的顺序存储 (1)线性表的顺序存储特点:逻辑上相连的元素,物理位置也相连.可随机访问表中元素,表中的存储位置可以用一个简单的,直观的公式表示,但是插入和删除都要移动大量的元素,效率不高,适合元素个数变化不大的情况,此时,如数据元素按照一定的顺序存储,则称为顺序存储的有序表,简称为    静态表. (2)线性表的动态分配顺序存储结构 typedef struct{ Elemtype *elem; //存储空间起始地址 int length; //当前长度 int listsize; //

数据结构第一章——线性表的实现

#include<stdio.h> #include<stdlib.h> #include<malloc.h> #define LIST_INIT_SIZE 100 #define LISTINCREMENT 10 #define OVERFLOW -2 #define ERROR 0 #define OK 1 using namespace std; //typedef int Status; typedef struct { int *elem; //指向整个线性表