資料結構線性表知識講解

2021-10-23 03:55:45 字數 1698 閱讀 7349

定義:線性表是具有相同特性資料元素的有限序列

為什麼要具有相同特性的資料元素?

把同一類事物歸類,方便用計算機進行批量處理。如果資料元素沒有相同特性,那麼就需要用很多種方法去處理這些資料,那麼將這一類資料組織在一起將沒有意義,這就失去了資料結構存在的意義。

儲存結構–

順序結構:

​ 相鄰資料元素的存放位址也相鄰(邏輯與物理統一);要求記憶體中可用儲存單元的位址必須是連續的,查詢方便,但是更新節點(插入或者刪除節點不方便)

//偽**:

#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...