1 線性結構 線性表

2021-08-03 05:31:53 字數 3681 閱讀 6750

由同型別資料元素構成有序序列的線性結構。

利用陣列的連續儲存空間順序存放線性表的個元素。

typedef

struct lnode *list;

struct lnode ;

struct lnode l;

list ptrl;

初始化(建立空的順序表)
list makeempty()
查詢
int find(elementtype x, list ptrl)
查詢成功的平均比較次數為(n

+1)/

2 ,平均時間效能為o(

n)

插入在第i(

i≤i≤

n+1)

個位置插入乙個值為x的新元素

for (j = ptrl->last; j >= i - 1; j--) // 將ai ~ an倒序向後移動

ptrl->data[j + 1] = ptrl->data[j] ;

ptrl->data[i - 1] = x; // 新元素插入

ptrl->last++; // last仍然指代最後元素的下標

}元素的向後移動:

* 平均移動次數為n/

2 * 平均時間效能為o(

n)

刪除刪除表的第i(

1≤i≤

n)個位置的元素

void delete(int i, list ptrl) 

for (j = i; j <= ptrl->last; j++)

ptrl->data[j - 1] = ptrl->data[j]; // 將ai+1 ~ an 順序向前移動

ptrl->last--; // last仍然指代最後元素的下標

}

不要求邏輯上相鄰的兩個元素物理上也相鄰。通過「鏈」建立起資料元素之間的邏輯關係。

typeof struct lnode *list;

struct lnode ;

struct lnode l;

list ptrl;

求表長
int length(list ptrl) 

return len;

}

時間效能為o(

n)

查詢按序號查:findkth

list findkth(int k, list ptrl) 

if (i == k) // 說明找到第k個元素

return p;

return null;

}

平均時間效能為o(

n)

按值查詢:find

list find(elementtype x, list ptrl)
平均時間效能為o(

n)

插入在第i−

1(1≤

i≤n+

1)個結點後插入乙個值為x的新結點:

1. 先構造乙個新結點,用s指向

2. 再找到鍊錶的第i−

1 個結點,用p指向

3. 然後修改指標,插入結點(p之後插入新結點是s)

// 不帶頭結點的鍊錶

list insert(elementtype x, int i, list ptrl)

p = findkth(i - 1, ptrl); // 查詢到第i-1個結點

if (p == null)

s = (list)malloc(sizeof(struct lnode)); // 建立乙個新結點

s->data = x;

s->next = p->next; // 新結點插入在第i-1個結點後面

p->next = s;

return ptrl;

}

平均查詢次數為n/

2 ,平均時間效能為o(

n)

刪除刪除鍊錶的第i(

1≤i≤

n)個位置的結點:

1. 先找到鍊錶的第i−

1 個結點,用p指向

2. 再用指標s指向要被刪除的結點(p的下乙個結點)

3. 然後修改指標,刪除s所指結點

4. 最後釋放s所指結點的空間

p = findkth(i - 1, ptrl); // 查詢第i-1個結點

if (p == null || p->next == null)

s = p->next; // s指向第i個結點

p->next = s->next; // 從鍊錶中刪除

free(s); // 釋放被刪除的結點

return ptrl;

}平均查詢次數為n/

2 ,平均時間效能為o(

n)

typedef

struct gnode *glist;

struct gnode uregion;

glist next; // 指向後繼結點

};

鍊錶中的結點可能同時隸屬於多個鏈。

多重鍊錶有廣泛的的用途:基本上如樹、圖這樣相對複雜的資料結構都可以採用多重鍊錶方式實現儲存。

多重鍊錶儲存矩陣

採用一種典型的多重鍊錶——十字鍊錶來儲存稀疏矩陣:

* 只儲存矩陣非0元素項,結點的資料域:行座標row、列座標col、數值value

* 每個結點通過兩個指標域,把同行、同列串起來:

* 行指標(或稱為向右指標)right

* 列指標(或稱為向下指標)down

線性結構 線性表

線性結構 線性表 棧 佇列 串和陣列 線性結構的特點 除了第乙個元素和最後乙個元素外,每個資料元素有乙個前驅和乙個後繼,線性表是最簡單 最基本 最常用的資料結構,它有順序儲存和鏈式儲存兩種儲存方案 線性表是n個資料元素的有限序列,在表中,元素之間存在著線性的邏輯關係 特點 同一性 線性表由同類元素組...

線性結構 線性表

資料結構是 adt abstract data type,資料抽象型別 的物理實現。什麼是線性表?線性表 由同型別的資料元素構成有序序列的線性結構 兩種實現模型 順序表,鍊錶 資料物件集 n個元素構成的有序序列 初始化鍊錶 init 返回鍊錶長度 len 判斷為空 is empty 指定位置新增 i...

線性結構 線性表

由同型別資料元素構成有序序列的線性結構 list makeempty int find elementtype x,list ptrl void insert elementtype x,int i,list ptrl if i 1 i ptrl last 2 for j ptrl last j i...