如何實現線性表的順序儲存

2021-10-05 19:18:57 字數 801 閱讀 4940

**

線性表的順序儲存又稱順序表

特點:邏輯順序與其物理順序相同

起始位置為loc(a),sizeof(elemtype)是每個資料元素所占用儲存空間的大小,則順序儲存如圖所示:

順序表記憶體位址

a1loc(a)

a2loc(a)+sizeof(elemtype)……

ailoc(a)+(i-1)*sizeof(elemtype)……

anloc(a)+(n-1)*sizeof(elemtype)……

…loc(a)+(maxsize-1)*sizeof(elemtype)

注意:線性表中元素的位序是從1開始,但是陣列下標是從0開始。

假定資料元素型別為elemtype,則線性表的順序儲存結構描述為

兩種基本方式:靜態分配和動態分配

靜態分配:

#define maxsize 50 //定義線性表的最大長度

typedef structsqlist; //順序表的型別定義

動態分配

#define initsize 50 //表長初始化定義

typedef structseqlist; //順序表的型別定義

動態分配是需要呼叫函式malloc:申請一整片連續的記憶體空間,執行結束以後會形成乙個指向這一整片空間開始地方的指標。

c的初試動態分配語句:

l.data=(elemtype*)malloc(sizeof(elemtype)*initsize);

注意:動態分配並不是鏈式儲存,它屬於順序儲存結構,依舊是隨機儲存方式,只是分配空間的大小可以在執行的時候決定。

順序儲存線性表實現

在計算機中用一組位址連續的儲存單元依次儲存線性表的各個資料元素,稱作線性表的順序儲存結構。順序儲存結構的主要優點是節省儲存空間,因為分配給資料的儲存單元全用存放結點的資料 不考慮c c 語言中陣列需指定大小的情況 結點之間的邏輯關係沒有占用額外的儲存空間。採用這種方法時,可實現對結點的隨機訪問,即每...

線性表 順序儲存實現

linearlist.h pragma once const int maxsize 20 typedef int datatype class dataarr class linearlist linearlist.cpp include linearlist.h include using na...

線性表的順序儲存實現

seqlist.h標頭檔案 1 線性表的順序儲存實現 2 3 ifndef seqlist h include 4 define seqlist h include 5 6 include 7 include 8 include 9 10 typedef int elementtype 11 def...