線性表的順序存儲也叫順序表,是用一組地址連續的存儲單元依次存儲線性表中的數據元素,從而使得邏輯上相鄰的兩個元素在物理位置上也相鄰。第一個元素存儲在線性表中的起始位置,第i個元素的存儲位置後面緊接着存儲的是第i+1個元素,得知順序表的特點是表中元素的邏輯位置和其物理順序相同。
假定線性表的元素類型爲elemtype,則線性表的順序存儲類型描述爲
#define MaxSize 50
typedef struct
{
elemtype data[MaxSize];
int length;
}Sqlist; //順序表的類型定義
一維數組可以動態分配,也可以靜態分配。
動態分配:
#define InitSize 100
typedef struct
{
elemtype *data; //指示動態分配數組的指針
int MaxSize,length;
}Seqlist;
c的初試動態分配語句:
L.data=(elemtype*)malloc(sizeof(elemtype)*InitSize);
c++的初試動態分配語句:
L.data=new elemtype[InitSize];
注:動態分配並不是鏈式存儲,同樣屬於順序存儲結構,物理結構沒有變化,依然是隨機存儲方式,只是分配的空間大小可以在運行時決定
- 順序表最主要的特點是隨機訪問,即通過首地址和元素序號可在時間O(1)內找到指定的元素
- 順序表的存儲密度高,每個結點只存儲數據元素
- 順序表邏輯上相鄰的元素物理上也相鄰,所以插入和刪除元素都需要移動大量元素