資料結構 (二) 線性表 棧 佇列

2021-10-14 15:14:56 字數 3931 閱讀 3273

線性表的定義和特點

由n個資料特性相同的元素構成的有序序列稱為線性表。特殊的,當n=0的時候,為空表.

特點:(對於非空的線性表或線性結構)

(1)存在唯一乙個被稱為「第乙個」的資料元素

(2)存在唯一乙個被稱為「最後乙個」的資料元素

(3)除第乙個之外,結構中的每乙個資料均只有乙個前驅

(4)除了最後乙個之外,結構中的每乙個資料均只有乙個後繼

**宣告:

#define maxsize 100	//線性表可能達到的最大長度

typedef struct

sqlist; //順序表的資料結構型別為sqlist

初始化

status initlist(sqlist &l)

取值

status getelem(sqlist &l,int i)

查詢

int locate(sqlist &l,elemtype e)

l.elem[i-1]=e;

l.length++;

return ok;

}

刪除

status listdelete(sqlist &l,int i)

--l.length;

return ok;

}

宣告

typedef struct lnode

lnode,*linklist;

初始化

status initlist(linklist &l)

取值

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

if(!p||j>i)

return error;

e=p->data;

return ok;

}

查詢

lnode *locateelem(linklist &l,elemtype e)

return p;

}

插入

status linkinsert(linklist &l,int i,elemtype e)

if(!p||j>i-1) return error;

s->next=p->next;

p->next=s;

return 0k;

}

刪除

status listdelete(linklist &l,int i)

if(!(p->next)||(j>i-1)) return error;

q=p->next; //儲存待刪除的節點

p->next=p->next->next;

delete q;

return ok;

}

建立單鏈表:

注意:單鏈表的建立和單鏈表的初始化有什麼不同:單鏈表的初始化是建立乙個只有頭結點的空鍊錶,單鏈表的建立是建立乙個包含多個節點的單鏈表。即從空表的狀態開始,依次建立各元素的節點,並逐個插入到鍊錶中。

根據插入位置的不同,分為前插法和後插法

(1)前插法(顯然,演算法的時間複雜度為o(n))

void creatlist_h(linklist &l,int n)

}

(2)後插法(演算法的時間複雜度仍是o(n) )

為了使新節點能夠插入到鍊錶尾,所以需要增加乙個新指標r指向鍊錶的尾結點

void creatlist(linklist &l,int n)

}

宣告:

typedef struct dulnode

dulnode,*dulinklist;

棧:先進後出

資料結構(二) 線性表

線性表是最簡單最常用的資料結構,是一種典型的線性儲存結構。定義 線性表是由n n 0 個資料元素 結點 a1 a 2 an 組成的有限序列。n為表的長度。當n 0,為 空表 n 0時,為 a1,a 2,an 邏輯特徵 非空的線性表只有乙個頭結點,也只有乙個終結點,頭結點只有乙個直接後繼結點,而沒有直...

資料結構實驗二 線性表

一 實驗目的 鞏固線性表的資料結構,學會線性表的應用。1.回顧線性表的邏輯結構,線性表的物理儲存結構和常見操作。2.學習運用線性表的知識來解決實際問題。3.進一步鞏固程式除錯方法。4.進一步鞏固模板程式設計。二 實驗內容 1.建立乙個n個學生成績的順序表,對錶進行插入 刪除 查詢等操作。分別輸出結果...

ZJU資料結構 二 線性表

線性表 由同型別資料元素構成有序序列的線性結構 表中元素個數稱為線性表的長度線性表沒有元素時,稱為空表表起始位置稱為表頭,表結束為止稱為表尾型別名稱 線性表 list 資料物件集 線性表是n 0 個元素構成的有序序列 a1,a2,an 操作集 線性表l list,整數i表示位置,元素x elemen...