資料結構與演算法之線性表 一 (筆記)

2021-08-02 02:21:04 字數 2795 閱讀 8929

線性表

抽象資料型別標準定義:

獲得元素演算法:

插入演算法思路:

刪除演算法思路:

優缺點:

缺點

**片段:

#define maxsize 50

#define ok 1

#define error 0

typedef int elemtype;

typedef int status;

typedef struct

sqlist;

//獲取元素演算法

status getelem(sqlist *l,int i, elemtype *e)

*e = l->data[i-1];

return ok;

} //時間複雜度為o(1)

//插入演算法

status linkinsert(sqlist *l, int i, elemtype *e)

if(i < l->length)

l->data[i-1] = *e;

l->length++;

return ok;

}} //時間複雜度為o(n)+ o(1)

//刪除演算法

status linkdelete(sqlist *l, int i, elemtype e)

*e = l->data[i-1];

for(k = i; k < l->length; k++)

l->length--;

return ok;

} //時間複雜度為 o(n)

頭節點

獲得鍊錶第i個資料的演算法思路:

單鏈表第i個資料插入結點的演算法思路:

單鏈表第i個資料刪除結點的演算法思路:

單鏈表整表建立演算法思路:

頭插法建立單鏈表思路:

尾插法建立單鏈表思路:

單鏈表整表刪除演算法思路:

**片段:

#define ok 1

#define error 0

#include

typedef int elemtype;

typedef int status;

typedef struct node

node;

typedef struct node *linklist;

//獲得元素演算法

status getelem(linklist *l,int i, elemtype *e)

if(j>i || !p)

*e = p->data;

return ok;

} //時間複雜度為o(n)

//插入演算法

status linklistinsert(linklist *l, int i, elemtype *e)

if(!p || j>i)

s = (linklist)malloc(sizeof(node));

s->data = e;

s->next = p->next;

p->next = s;

return ok;

} //時間複雜度為o(n)

//刪除演算法

status linklistdelete(linklist *l, int i, elemtype *e)

if(!p || j>i)

q = p->next;

p->next = q->next;

*e = q->data;

free(q);

return ok;

}//頭插法建立單鏈表

void createlisthead(linklist *l. int n)

} //時間複雜度為o(n)

//尾插法建立單鏈表

status createlisttail(linklist *l, int n)

r->next = null;

}/**

****

****

****

****

****

****

****

****

****

****

****

****

****

*** * sqlist l 和 sqlist *l 不加星號表示定義結構體變數,加了星號表示

* 定義指向結構體的指標變數,這個加與不加無所謂,只是結構體中分量的訪問

* 形式不同。elemtype *e 是表示指標變數, elemtype e 是表示一般的

* 變數。在此程式中是作為形參,表示傳遞不同的內容,前者傳遞位址值,後者

* 傳遞資料。

****

****

****

****

****

****

****

****

****

****

****

****

****

****

*/

資料結構與演算法之線性表

1.線性表的基本概念 線性表是零個或多個資料元素的有序佇列.特性 資料元素之間是有順序的 資料元素個數是有限的 資料元素的型別必須相同.2.線性表的數學定義及性質 線性表是具有相同型別的n n 0 個資料元素的有限序列 a0,a1,a2.an ai是表項,n是表長度.性質 a0是線性表中的第乙個元素...

資料結構與演算法之線性表

線性表屬於資料結構中邏輯結構中的線性結構。回憶一下,資料結構分為物理結構和邏輯結構,邏輯結構分為線性結構 幾何結構 樹形結構和圖形結構四大結構。其中,線性表就屬於線性結構。剩餘的三大邏輯結構今後會一一介紹。線性表 list 由零個或多個資料元素組成的有限序列。注意 1.線性表是乙個序列。2.0個元素...

資料結構與演算法之 線性表

01線性表 1.線性表的判斷方式就是元素有且只有乙個直接前驅和直接後繼,元素可以為空,此時叫做空表 2.抽象資料型別標準格式 adt 抽象資料型別名 data operation endadt 3.操作偽 operation endadt 4.實際問題 提問 實現兩個線性表a,b的並集操作 思路 迴...