2 2順序表(順序儲存結構)及初始化過程

2021-09-05 11:50:37 字數 1624 閱讀 7127

順序表,全名順序儲存結構,是線性表

的一種。通過《線性表》一節的學習我們知道,線性表用於儲存邏輯關係為「一對一」的資料,順序表自然也不例外。

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

例如,使用順序表儲存集合,資料最終的儲存狀態如圖 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)

printf("\n");

}int main()

printf("順序表中儲存的元素分別是:\n");

displaytable(t);

return 0;

}程式執行結果如下:

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

1 2 3 4 5

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

關於初始化及初始化順序

首先,類的成員變數會被自動初始化,並且會在構造器被呼叫前發生,如下 public class testinitialization public static void main string args 如下 主類 public class staticinitialization 呼叫main之前...

初始化順序

上次面試碰到一面試題,雖然知道但是感覺還是有必要記錄下來,利己利民,題目是關於初始化順序的,也許對很多初學者還是有點用處的。閒話不多說,先上 package initialseq public class parent public parent public int method package ...

初始化順序

在類的內部,變數定義的順序決定了初始化的順序.即使變數定義散布於方法定義之間,它們仍會在任何方法呼叫之前得到初始化.無論建立多少個物件,靜態資料只占用乙份儲存區域.靜態變數初始化只有在必要時才會執行,比如有類table,如果不建立table物件也不引用table的靜態方法,那麼類table的靜態變數...