資料結構之線性表(1)

2021-09-29 14:44:30 字數 2696 閱讀 2136

**部分可以先看一下不用理解,也可以忽略主要對概念的理解,只有把概念理解好了,才能知道題目怎麼去解

線性表是n個資料特性相同的元素的組成有限序列,是其他資料結構的基礎

線性表的邏輯結構無疑就是線性結構線性結構有很多如後面要學的棧,佇列,串,陣列)都是線性結構,而線性表是最基本的線性結構

知道邏輯結構之後就要來學習他的儲存結構了有順序和鏈式兩種。

3.1順序儲存

順序儲存的特點:邏輯上相鄰的資料元素,物理次序也是相鄰的。只要確定好了儲存線性表的起始位置,線性表中任一資料元素都可以隨機訪問,所以線性表的順序儲存結構是一種隨機訪問的儲存結構,因為高階語言中的陣列型別也是有隨機訪問的特性,所以通常我們都使用陣列來描述資料結構中的順序儲存結構,用動態分配的一維陣列表示線性表。

#define maxsize 100 

//定義學生最大數量

#define ok 1

//正確標誌

#define error 0

//失敗標誌

//學生資訊的資料結構

typedef

struct

student;

//順序表資料結構

typedef

struct

sqlist;

//定義sqlist型別的變數

sqlist l;

//而在考研中我們一般使用下面的**

int a[maxsize]

int length=

0;

這是乙個十分簡單的例子,這樣我們就可以通過l.elem[i-1]訪問序號為i的學生資訊了

1.初始化

基本演算法:

//初始化順序表基本演算法

status initlist

(sqlist &l)

2.取值

基本演算法:

//順序表取值

status get

(sqlist &l,

int i,elemtype &e)

3.查詢

基本演算法:

//順序表查詢

intfind

(sqlist l,elemtype e)

return error;

//查詢失敗

}

4.插入

基本演算法:

//順序表插入

status listinsert

(sqlist &l,

int i,elemtype e)

5.刪除

基本演算法:

//順序表刪除

status listdelete

(sqlist &l,

int i)

演算法都十分的簡單,眼尖的你可能發現了,為啥有的引數用的是引用,有的不是呢?

這裡我就得講下使用引用作為形參的作用了,主要有三點:

(2)引用型別作為形參,在記憶體中並沒有產生實參的副本,而使用一般變數作為形參,,形參和實參會分別占用不同給的儲存空間,當資料量較大時,使用變數作為形參可能會浪費時間和空間。

(3)雖然使用指標也可以達到引用一樣的效果,但是在被調函式中需要重複使用"*指標變數名"來訪問,很容易產生錯誤並且使程式的閱讀性變差。

此時你會發現,使用順序表作為儲存時,空間是一次性直接開闢的,所以可能會有空間不足或者浪費空間的情況出現,那麼為啥不用乙個就分配乙個空間呢,再使用乙個方式將這些空間串起來不就好了,是時候展現真正的技術了(鍊錶)。

3.2鏈式儲存

在鏈式儲存中,每個儲存結點不僅包含元素本身的資訊(資料域),還包含元素之間邏輯關係的資訊,即乙個結點中包含有直接後繼結點的位址資訊,這稱為指標域。這樣可以通過乙個結點的指標域方便的找到後繼結點的位置。

由於順序表中每個元素至多只有乙個直接前驅元素和乙個直接後繼元素。當採用鏈式儲存時,一種最簡單也最常用的方法是:

在每個結點中除包含資料域外,只設定乙個指標域用以指向其直接後繼結點,這種構成的鏈結表稱為線性單向鏈結表,簡稱單鏈表

另一種方法是,在每個結點中除包含數值域外,設定兩個指標域,分別用以指向直接前驅結點和直接後繼結點,這樣構成的鏈結表稱為線性雙向鏈結表,簡稱雙鏈表

單鏈表當訪問乙個結點後,只能接著訪問它的直接後繼結點,而無法訪問他的直接前驅結點。雙鏈表則既可以依次向後訪問每個結點,也可以依次向前訪問每個結點。

3.3迴圈鍊錶是另一種形式的鏈式儲存結構,它的特點是表中尾結點的指標域不再是空,而是指向頭結點,整個鍊錶形成乙個環。由此,從表中任意一結點出發均可找到鍊錶中其他結點。如圖所示為帶頭結點的迴圈單鏈表迴圈雙鏈表

資料結構之線性表 1

線性表一般分為順序表和煉表,本篇是對順序表的回顧,以c 建立簡單學生健康管理系統為例。順序表是線性表基於陣列的儲存表示。其定義是 將線性表中的所有項,根據其邏輯順序 有序或無序皆可 依次儲存到一片連續的空間裡面,空間的開始位置會被指定好 一般實際起始位置在執行時分配 1.順序表節點的結構體定義 st...

資料結構之線性表(1)

線性表 零個或多個資料元素的有限序列。在較複雜的線性表中,乙個資料元素可以由若干個資料項組成。線性表抽象型別定義 adt 線性表 list data operation initlist l 初始化線性表 listempty l 線性表為空返回true,否則返回false clearlist l 清...

1 資料結構之線性表

線性表是最常用且最簡單的一種資料結構,簡言之,乙個線性表是n個資料元素的有限序列。1 線性表長度 線性表中元素的個數n n 0 定義為線性表的長度 2 空表 線性表長度 0 1 插入 2 追加 特殊形式的插入 3 刪除 標號 看作陣列名,但不是陣列 編號 pos 追加 特殊形式的插入 源 1 1 線...