定義:線性表是具有相同特性資料元素的有限序列
為什麼要具有相同特性的資料元素?
把同一類事物歸類,方便用計算機進行批量處理。如果資料元素沒有相同特性,那麼就需要用很多種方法去處理這些資料,那麼將這一類資料組織在一起將沒有意義,這就失去了資料結構存在的意義。
儲存結構–
順序結構:
相鄰資料元素的存放位址也相鄰(邏輯與物理統一);要求記憶體中可用儲存單元的位址必須是連續的,查詢方便,但是更新節點(插入或者刪除節點不方便)
//偽**:
#define maxsize 10000
int a[maxsize]
;int length =
0;
鏈式結構:
相鄰資料元素可隨意存放,但所佔儲存空間分兩部分,一部分存放結點值,另一部分存放表示結點間關係的指標 。查詢不方便,每次查詢都需要遍歷鍊錶,但是刪除和新增節點方便。
//a->b->c->d(end)
typedef
struct lnodenode;
node *l = null;
l =(node*
)malloc
(sizeof
(node));
a->next = b;
b->next = c;
c->next = d;
d->next = null;
head指標: 頭指標的意義在於,在訪問鍊錶時,總要知道鍊錶儲存在什麼位置(從何處開始訪問),由於鍊錶的特性(next指標),知道了頭指標,那麼整個鍊錶的元素都能夠被訪問,也就是說頭指標是必須存在的。
空鍊錶(1)head->->a->b->c(end)
判斷:head->next = null;
(2)head->a->b->c(end)
判斷:head = null;
雙向鍊錶
//宣告乙個雙向鍊錶
l =(dnode*
)malloc
(sizeof
(dnode));
a->next = b;
b->next = c;
c->next = d;
d->next =
null
;d->prev = c;
c->prec = b;
b->prev = a;
a->prev =
null
;迴圈鍊錶:
head->a->b->c->head c->next = head;順序表和煉表的特性對比
插入操作
取元素問題
儲存空間問題
操作問題
刪除單鏈表頭元素:
void removehead(linklist head)
從這也可以體現出head指標的作用了。
元素移動次數計算
順序表插入
順序表刪除
資料結構 線性表知識總結
4 插入操作 線性表的插入運算是指在表的第i 1 i n 1 個位置,插入乙個新元素e,使長度為n的線性表變成長度為n 1的線性表 注意元素移動和順序表長度增加 5 插入演算法的實現 template void seqlist insert int i,t x 5 分析 插在最後不移動元素,時間複雜...
資料結構(線性表)
1.試寫一演算法,在無頭結點的動態單鏈表上實現線性表操作insert l,i,b 並和在帶頭結點的動態單鏈表上實現相同操作的演算法進行比較。status insert linklist l,int i,int b 在無頭結點鍊錶l的第 i個元素之前插入元素 belse insert 2.已知線性表中...
資料結構 線性表
參考 一 線性表 順序表 單鏈表 迴圈鍊錶 雙鏈表 順序表 1.表的初始化 void initlist seqlist l 2.求表長 int listlength seqlist l 3.取表中第i個結點 datatype getnode l,i 4.查詢值為x的結點 5.插入 具體演算法描述 v...