承接上文,直接開始講這兩種表let』s go.
還是老樣子,在這兩種表(順序錶鏈表)之前說一下線性表。
線性表定義:具有相同資料元素的乙個有序序列
線性表的性質:線性表定義:把線性表中的所有元素按照他的邏輯順序依次儲存到指定的連續的儲存空間中。通俗來說,就是線性表的順序儲存結構叫做順序表。
可以把順序表看作乙個一維陣列進行理解,線性表的邏輯序號是從1開始的,對應的順序表的陣列是從下標0開始的,在這裡一定注意區分
在下文大家會看到乙個符號為elemtype,這個符號表示乙個資料型別。
// 把elemtype定義為int型別
typedef int elemtype;
順序表的提供:
1、通過順序表指標l間接的提供順序表,定義方式為 sqlist *l;在引用length域的時候l->length;
2、還可以通過順序表q提供,此時沒有指標,單純的資料操作,引用length域時q.length.
一、建立順序表:由元素a[0…n-1]建立順序表l,把陣列a中的每個元素依次放入順序表,n就是順序表的長度。其中的l是順序表指標,是輸出型引數,所以在形參l的前面需要加上引用符』&『。
// 建立順序表
void
createlist
(sqlist *&l
,elemtype a[
],int n)l-
>length=k;
//把l的長度定為k
}
二、順序表基本運算演算法
1、初始化線性表:說白了就是構造乙個空的線性表l,只需分配儲存空間和將length域設為0就可以。
void
initlist
(sqlist *&l
)
2、銷毀線性表:直接釋放l所占用的記憶體空間即可void
destorylist
(sqlist *&l
)
malloc用來分配儲存空間,當不在需要的時候務必釋放,如果不釋放會造成記憶體洩漏,free是與malloc相對應的,用來釋放記憶體空間。
3、判斷線性表是否為空表:空表的長度為0,即l->length==0,利用bool返回true或者false返回
bool listempty
(sqlist *l)
4、求線性表的長度:利用l->length,他表示線性表l的長度int listlength
(sqlist *l)
5、輸出完整的線性表:需要利用for/while/do while來遍歷陣列,依次展現l中各個元素的值void
displist
(sqlist *l)
cout<}
6、輸出線性表中某個資料元素的值:通過定義乙個引數來返回所找到的數值,bool getelem
(sqlist *
l,int i,elemtype &e)
//l代表線性表,i代表第i個元素的數值,e來存放所找到的值e=l
->data[i-1]
;//邏輯序號與陣列下標存在錯位關係,邏輯序號1~n,陣列下標0~n-1
return ture;
}
7、按元素查詢:遍歷陣列,查詢到與待定值e相等的元素,找到就返回它的邏輯序號,陣列下標+1就是邏輯序號int locateelem
(sqlist *
l,elemtype e)
//通過迴圈查詢元素e所在的陣列下標
if(i>=l-
>length)
//沒找到此元素
else
//找到了此元素,返回他的邏輯序號
}
8、插入資料元素:在第i個位置插入乙個新元素,第i個元素之後的全部元素後移,為此元素提供乙個空位,最後順序表長度+1.bool listinsert
(sqlist *&l
,int i,elemtype e)
//看i是否正確,判斷如果i不存在的時候
i--;
//邏輯序號與陣列下標存在差異,因而減一來轉換為陣列下標
for(j=l-
>length;j>i;j--)l
->data[i]
=e;//插入元素el-
>length++
;//順序表長度+1
return
true
;}
9、刪除元素:找到第i個元素,將i之後的元素都向前移動乙個位置,等同於把第i個元素覆蓋。void
listdelete
(sqlist *&l
,int i,elemtype & e)
//判斷i是否存在
i--;
//將邏輯序號轉換為陣列下標e=l
->data[i]
;//存放這個即將被刪除的資料
for(j=i;j>length-
1;j++
)//陣列下標i之後的全部元素向前移l-
>length--
;//順序表長度減一
return
true
;}
以上就是我對順序表的理解,供大家學習 線性表 順序表
1 線性表 線性表是最基本 最簡單 也是最常用的一種資料結構。線性表中資料元素之間的關係是一對一的關係,即除了第乙個和最後乙個資料元素之外,其它資料元素都是首尾相接的。線性表的邏輯結構簡單,便於實現和操作。因此,線性表這種資料結構在實際應用中是廣泛採用的一種資料結構。線性表 list,零個或多個資料...
線性表 順序表
線性結構的特點是 在非空的有限集合中,只有唯一的第乙個元素和唯一的最後乙個元素。第乙個元素沒有直接前驅元素,最後乙個沒有直接的後繼元素。其它元素都有唯一的前驅元素和唯一的後繼元素。要想將線性表在計算機上實現,必須把其邏輯結構轉化為計算機可識別的儲存結構。線性表的儲存結構主要有兩種 順序儲存結構和鏈式...
線性表 順序表
基本思想 用一段位址連續的儲存單元一次儲存線性表的資料元素 隨機訪問 注意事項 c 語言中陣列下標是從0開始的,而線性表中元素序號是從1開始的,也就是說 線性表中第i個元素儲存結構在陣列中下標為i 1的位置。首先是大體的函式宣告 const int maxsize 100 根據實際問題定義具體的大小...