結構之美(關於線性表所有的知識)

2021-06-23 08:58:32 字數 3379 閱讀 6551

從最簡單的線性表開始講起

在計算機中,資料並不是孤立的,而是具有一定內在聯絡的資料集合,這種聯絡就是資料結構,說明資料如何被組織在一起的。下面我們從最簡單的線性表開始講起。

線性表是最基本、最簡單、也是最常用的一種資料結構。線性表中資料元素之間的關係是一對一的關係,即除了第乙個和最後乙個資料元素之外,其它資料元素都是首尾相接的。線性表的邏輯結構簡單,便於實現和操作。因此,線性表這種資料結構在實際應用中是廣泛採用的一種資料結構。

線性表——list,零個或多個資料元素的有限序列。

首先它是乙個序列。也就是說,元素之間是有順序的,若元素存在多個,則第乙個元素無前驅,最後乙個元素無後繼,其他每個元素都有且只有乙個前驅和後繼。

當線性表元素的個數n(n>=0)定義為線性表的長度時,如果n=0,則說明該線性表是個空表。

線性表的抽象資料型別(adt)定義

線性表的抽象資料型別定義如下:

01adt 線性表(list)

02data

03線性表的資料物件集合為,每個元素的型別均為datatype.其中,除第乙個元素a1外,每乙個元素有且只有乙個直接前驅元素,除了最後乙個元素an外,每乙個元素有且只有乙個直接後繼元素。資料元素之間的關係是一對一的關係.

04operation

05initlist(*l):初始化操作,建立乙個空的線性表

06listempty(l):若線性表為空,返回true,否則返回false.

07clearlist(*l):將線性表清空.

08getelem(l,i,*e):將線性表l中的第i個位置元素值返回給e

09

10

11listdelete(*l,i,*e):刪除線性表l中第i個位置元素,並用e返回其值.

12listlength(l):返回線性表l的元素個數.

13endadt

對於不同的應用,線性表的基本操作是不同的,但是上述操作是最基本的,對於實際問題中涉及的關於線性表的更複雜的操作,完全可以用這些基本操作的組合來實現。

舉個例子,假設la表示集合a,lb表示集合b,現在要得到乙個集合a使得a=aub:

01voidunionl(sqlist *la,sqlist lb)

02

13}

這裡,union的操作用到了listlength,getelem,locateelem,listinsert等基本方法。

線性表的定義

線性表的順序儲存結構,指的是用一段位址連續的儲存單元依次儲存線性表的資料元素。線性表的順序儲存結構的**如下:

1#define maxsize 20      /* 儲存空間初始分配量 */

2typedefintelemtype;/* elemtype型別根據實際情況而定,這裡假設為int */

3typedefstruct

4sqlist;

這裡,我們發現描述順序儲存結構需要三個屬性:

儲存空間的起始位置——陣列data,它的儲存位置就是儲存空間的儲存位置。

線性表的最大儲存容量——陣列長度maxsize

線性表的當前長度length

注意:線性表的長度應該小於等於陣列的長度。

下面的程式定義線性表並初始化一些隨機數:

view source

print?

01#include

02#include

03#include

04

05#define maxsize 20      /* 儲存空間初始分配量 */

06typedefintelemtype;/* elemtype型別根據實際情況而定,這裡假設為int */

07typedefstruct

08sqlist;

12

13//順序表的初始化

14sqlist init()

15

20

21//順序表的建立

22sqlist create(sqlist l)

23

31returnl;

32}

33

34intmain()

35

45}

線性結構之線性表

線性結構的特點 存在唯一的乙個被稱做 第乙個 的資料元素 存在唯一的乙個被稱做 最後乙個 的資料元素 除第乙個之外,集合中的每個資料元素均只有乙個前驅 除最後乙個之外,集合中每個資料元素均只有乙個後繼 線性表 乙個線性表是n個資料元素的有限序列。線性表再物理結構的表示上可以分為 1 順序表示和 2 ...

mysql 線性表 資料結構之線性表

概要 參考 大話資料結構 把常用的基本資料結構梳理一下。線性表定義 線性表 list 零個或多個資料元素的有限序列。若將線性表記為 a 1,cdots,a a i,a cdots,a n 則表中 a 領先於 a i a i 領先於 a 稱 a 是 a i 的直接前驅元素,a 是 a i 的直接後繼元...

mysql 線性表 資料結構 線性表之順序線性表

public class sequencelist else stringbuilder sb new stringbuilder for int i 0 i size i int len sb.length public class sequencelisttest public static v...