隨機訪問:可以在o(1)的時間複雜度內找到第n個元素
儲存密度高:每個節點只儲存資料元素
拓展容量不方便,即使採用動態分配的方式,時間複雜度也比較高
插入、刪除操作不方便,需要移動大量的元素
c語言記憶體動態分配.先來看一下關於順序表的一些操作順序表的宣告(靜態分配方式)malloc(m)函式:開闢m位元組長度的記憶體空間,並返回這段空間的首位址
sizeof(x)運算,計算變數x的長度
free(s):釋放指標s所指變數的儲存空間,即徹底刪除
注意:使用這些函式需設定標頭檔案:
#include
#include
using
namespace std;
#define maxsize 10
//定義最大長度
//定義順序表
typedef
struct
sqllist;
//初始化
注意:當我們把這兩行**去掉看執行結果
這是由於產生了髒資料,可能計算機中這塊區域之前存放的是有資料的,如果不進行初始或為0的話,就會有髒資料的存在
順序表的宣告(動態分配+擴容)
#include
#include
using
namespace std;
#define initsize 10
//定義最大長度
//定義順序表
typedef
struct
sqllist;
//初始化
void
initlist
(sqllist &l)
//動態擴容
void
increase
(sqllist &l,
int len)
l.maxsize = l.maxsize + len;
//長度增加len
free
(p);
//釋放空間
}int
main()
線性表的插入//指定位置插入資料
bool
insertlist
(sqllist &l,
int i,
int e)
if(l.length >= maxsize)
for(
int j = l.length; j >= i; j--
) l.data[i-1]
= e;
l.length++
;return
true;}
intmain()
}else
printf
("長度=%d\n"
,l.length)
;return0;
}
線性表的刪除bool
listdelete
(sqllist &l,
int i,
int&e)
e = l.data[i -1]
;//將要刪除的元素返回
for(
int j = i; j < l.length; j++
) l,length--
;//長度-1
return
true
;}
線性表按位查詢int
getelem
(sqllist l,
int i)
線性表按值查詢int
locateelem
(sqllist l,
int e)
}return0;
}
資料結構 線性表 順序表
豐富了前邊的功能,更加完善。include include define list init size 100 線性表儲存空間的初始分配量 define listincrement 10 線性表儲存空間的分配增量 using namespace std const int overflow 2 ty...
資料結構 線性表 順序表
線性表是具有相同特性的資料元素的乙個有限序列。線性表的順序儲存結構是,把線性表中的所有元素按照其邏輯順序依次儲存到從計算機儲存器中指定的儲存位置開始的一塊連續的儲存空間。include include include define maxsize 50 using namespace std 假設l...
資料結構 線性表(順序表)
順序表就是把線性表中的所有元素按照其邏輯順序,依次儲存到從指定的儲存位置開始的一塊連續的儲存空間中。這樣線性表中第乙個元素的儲存位置就是指定的儲存位置,第i 1個元素的儲存位置緊接在第i個元素的儲存位置的後面。順序表就像如下圖中的房子,每個房間左邊的數字就是該房間離0點的距離,同時也代表了房間號,房...