線性表(list)是由同一型別的資料元素構成的有序序列的線性結構。線性表中元素的個數稱為線性表的長度;當乙個線性表中沒有元素時,稱之為空表,表的起始位置稱為表頭,表的結束位置稱為表尾。
線性表的操作集:
list makeempty():初始化乙個新的空線性表。
elementtype findkth(int k,list l):根據指定的位序k,返回l中相應的元素a_k。
int find(elementtype x, list l):已知x,返回線性表l中與x相同的第乙個元素的相應位序i;若不存在則返回空。
void insert(elementtype x, int i, list l):在l的指定位序i前插入乙個新元素x
void delete(int i, list l):從l中刪除指定位序i的元素
int length(list l):返回線性表l 的長度。
定義:線性表的順序儲存是指在記憶體中用位址連續的一塊儲存空間順序存放線性表的各元素。由於一維陣列在記憶體中占用的儲存空間就是一組連續的儲存區域,所以用一維陣列來表示順序儲存的資料區域再合適不過。
線性表的儲存結構如下:
typedef
structlist;
初始化
即構造乙個空表。首先動態分配表結構所需要的儲存空間,然後將表中的last設定為-1,**如下:
list
* makeempty()
int find(elementtype x,list *ptrl)
3. 插入.
插入是指在表的第k(1<=k<=n+1)個位置上插入乙個值為x的元素。**如下
void insert(elementtype x, int k, list *ptrl)//插入
/*開始從後往前逐個移位*/
for(i=ptrl-> last; i>=k-1; i--)
ptrl-> data[i+1] = ptrl-> data[i];
/*插入資料*/
ptrl-> data[k-1] = x;
ptrl-> last++;
return;
}
刪除
刪除是指從線性表中刪除掉第k(1<=k<=n)個元素,刪除之後表的長度變成n-1。**如下:
void delete(int k, list *ptrl)
/*刪除元素*/
for(i = k; i <= ptrl-> last; i++ )
ptrl-> data[i-1] = ptrl-> data[i];
ptrl-> last--;
}
四. 線性表的鏈式儲存實現
由於順序表的儲存特點時用物理上的相鄰實現了邏輯上的相鄰,因此對順序表的插入,刪除時需要移動資料元素來實現,影響了執行的效率。而線性表的鏈式儲存結構是通過「鏈「來建立資料元素之間的邏輯關係的,所以對線性表的插入,刪除不需要移動資料元素,只需要修改鏈。
鏈式儲存中,結點的結構定義如下:
typedef
struct node
list;
五. 鏈式儲存線性表的操作實現
1. 求表長
int length(list *ptrl)
return i;
}
查詢
○按順序查詢
list
* findkth(int k, list
*ptrl)
if(p ==
null)
return
null;
else
return p;
}
○按值查詢
list
* find(elementtype x, list
*ptrl)
插入
list
*insert(list
*ptrl, int k, elementtype x)
p = findkth(k-
1, ptrl);
if(p ==
null)
else
}
刪除
list
*delete(int k, list
*ptrl)
/*刪除的不是第乙個結點*/
p = findkth(k-
1, ptrl);
s = p -> next;
else
if(p ==
null)
else
if(s ==
null)
else
}
線性表基礎知識總結
線性表 list 是由同一型別的資料元素構成的有序序列的線性結構。線性表中元素的個數稱為線性表的長度 當乙個線性表中沒有元素時,稱之為空表,表的起始位置稱為表頭,表的結束位置稱為表尾。線性表的操作集 list makeempty 初始化乙個新的空線性表。elementtype findkth int...
線性表的基礎知識
資料長度與線性表長度區別 陣列的長度是存放線性表的儲存空間的長度儲存分配後這個量是一般是不變的。線性表的長度是線性表中資料元素的個數,隨著線性表插入和刪除操作的進行,這個量是變化的。在任意時刻,線性表的長度應該小於等於陣列的的長度。位址計算方法 線性表起始是1,c中陣列從 0開始。線性表的第 i個元...
線性表知識總結
線性表順序儲存結構 const int maxsize n template class seqlist public seqlist seqlist datatype a,int n seqlist int length datatype get int u int locate datatype...