線性表的定義和特點
由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...