資料結構(知識點005)

2021-10-07 06:13:35 字數 1940 閱讀 2636

本章主要介紹:

1.什麼是線性表    2.順序表及初始化過程詳解    3.順序表以及基本操作   4.鍊錶(鏈式儲存結構)及建立(c語言詳解版)

5.鍊錶的基本操作    6.順序表和煉表的優缺點    7.靜態鍊錶及實現     8.靜態鍊錶基本操作  9.靜態鍊錶和動態鍊錶區別詳解

10.迴圈鍊錶(約瑟夫環)的建立及c語言實現    11.雙向鍊錶及其建立  12.雙向鍊錶基本操作    13.雙向迴圈鍊錶及建立

13.資料結構實現專案——俄羅斯輪盤賭小遊戲

目錄

資料結構(知識點005)

第二章 線性表

2.2 順序表及初始化過程詳解

2.2.1順序表的初始化

順序表,全名為順序儲存結構,是線性表的一種。通過之前的學習我們知道線性表用於儲存邏輯關係為「一對一」的資料,順序表自然也不例外。

不僅如此,順序表對資料的物理儲存結構也有要求。順序表儲存資料時,會提前申請一整塊足夠大小的物理空間,然後將資料依次儲存起來,儲存時做到資料元素之間不留一絲縫隙。

比如:使用順序表儲存集合【1,2,3,4,5】,資料最終的額儲存狀態如圖1所示:

圖 1 順序儲存結構示意圖

由此我們可以得出,將「具有 '一對一' 邏輯關係的資料按照次序連續儲存到一整塊物理空間上」的儲存結構就是順序儲存結構。

通過觀察圖 1 中資料的儲存狀態,我們可以發現,順序表儲存資料同陣列

非常接近。其實,順序表儲存資料使用的就是陣列。

使用順序表儲存資料之前,除了要申請足夠大小的物理空間之外,為了方便後期使用表中的資料,順序表還需要實時記錄以下 2 項資料:

順序表申請的儲存容量;

順序表的長度,也就是表中儲存資料元素的個數;

因此,我們需要自定義順序表,c 語言實現**如下:

typedef struct tabletable;
注意,head 是我們宣告的乙個未初始化的動態陣列,不要只把它看做是普通的指標。

接下來開始學習順序表的初始化,也就是初步建立乙個順序表。建立順序表需要做如下工作:

因此,c 語言實現**如下:

#define size 5 //對size進行巨集定義,表示順序表申請空間的大小

table inittable()

t.length=0;//空表的長度初始化為0

t.size=size;//空表的初始儲存空間為size

return t;

}

我們看到,整個順序表初始化的過程被封裝到了乙個函式中,此函式返回值是乙個已經初始化完成的順序表。這樣做的好處是增加了**的可用性,也更加美觀。與此同時,順序表初始化過程中,要注意對物理空間的申請進行判斷,對申請失敗的情況進行處理,這裡只進行了「輸出提示資訊和強制退出」的操作,可以根據你自己的需要對**中的 if 語句進行改進。

通過在主函式中呼叫 inittable 語句,就可以成功建立乙個空的順序表,與此同時我們還可以試著向順序表中新增一些元素,c 語言實現**如下:

#include #include #define size 5

typedef struct tabletable;

table inittable()

t.length=0;

t.size=size;

return t;

}//輸出順序表中元素的函式

void displaytable(table t){

for (int i=0;i程式執行結果如下:

順序表中儲存的元素分別是:

1 2 3 4 5

可以看到,順序表初始化成功。

資料結構 知識點

定義 度 兒子數 分支節點 除了根和葉子的節點 根的深度為1 資料結構的分類 資料結構分為邏輯結構和物理結構。邏輯結構 表現資料之間的關係的一種資料結構,分為線性結構和非線性結構。物理結構 表現資料如何儲存的一種資料結構,通常分為順序結構 鏈式結構 索引結構和雜湊結構。有序表,也叫有序線性表,資料按...

資料結構知識點

1 線性結構與非線性結構 線性結構 線性表,棧,隊 乙個根節點,最多乙個前節點乙個後節點 首節點無前節點,尾接點無後節點 非線性結構 樹形結構,圖形結構 線性表 由一組資料元素構成,資料元素的位置只取決於自己的序號 陣列 棧 限定只能在表的一端進行插入和刪除,先進後出,只能在棧頂進出 佇列 只能在表...

資料結構,知識點

二叉樹 定義 二叉樹在圖論中是這樣定義的 二叉樹是乙個連通的無環圖,並且每乙個頂點的度不大於3。有根二叉樹還要滿足根節點的度不大於2。基本概念 二叉樹是遞迴定義的,其結點有左右之分,邏輯上二叉樹有五種基本形態 1 空二叉樹 2 只有乙個根節點的二叉樹 3 只有左子樹 4 只有右子樹 5 完全二叉樹。...