一.順序表的結構體型別
包含三個成員:
1. * case由於順序表在記憶體中的空間是連續的,所以申請乙個指向順序表的base指標,申請乙個連續空間可以用 下標操作。
2. capacity 定義乙個容量大小。
3. len 定義乙個長度,初始化為0,插入乙個資料 len++, 刪除乙個資料 len--。
二.順序表結構體型別
三.順序表中重要函式
1.尾插push_back 、頭插push_front
想要插入,順序表必須沒有滿,判斷條件:seqlist->len >= seqlist->capacity 表示順序表已滿,不能插入。
尾插表不滿的話,直接在尾部進行插入,最後記得在len++;
頭插表不滿的話,在頭部插入之前必須先移動資料,從尾部的資料開始移動base[i] = base[i-1], 迴圈結束條件是 i>0,然後把x插入到list->base[0],最後記得len++;
2.尾刪pop_back 、頭刪 pop_front
尾刪、頭刪前提條件是順序表不能為空seqlist->len <= 0
尾刪的話,順序表不為空,直接讓seqlist->len--;就行,刪除不一定非要把該資料給刪除了,只要讓len--,如果再要插入直接把以前資料覆蓋了
頭刪的話,順序表不為空,從頭部開始移動list->base[i] = list->base[i+1],最後len--;
3.顯示函式show
顯示函式:迴圈解決問題,從頭輸出到尾,迴圈結束條件是i < list->len。
4.頭部元素front,尾部元素back
返回乙個元素型別,用到斷言(順序表不空list->len > 0),最後return頭部或者尾部元素
5.按位置插入insert_pos
按位置插入的話函式原型必須有三個引數(順序表,位置,插入元素),首先要插入乙個元素必須順序表不滿(list->len >= list->capecity),其次插入的位置合法
(pos>=0 || pos len),最後插入元素,利用迴圈移動位置,別忘記給len++。
6.排序sort(氣泡排序)
氣泡排序的思想是(假設從小到大排序):利用兩個迴圈,讓大數往底沉,小數往上冒。
有n個元素,迴圈n-1趟(最後一趟就剩乙個數。沒不要和自己比,所以減1),每一趟中,迴圈j-1-i(最後乙個元素沒必要和自己比較,-i是因為跑完i趟就少比i個元 素),然後利用選擇語句if(list->base[j] < list->base[j+1]) 前數小於後數,定義乙個臨時變數temp 交換兩數( t = a ,a=b, b=t)。
7.按值插入insert_val
按值插入的話,首先要是乙個排好順序的順序表(假如由小到大排序),插入首先順序表不能滿,其次迴圈比較,滿足條件就移動資料(迴圈條件 i>0 && valuebase[i-1]),不滿足條件跳出迴圈,把value插入,最後記得len++;
8.逆置函式reverse
逆置函式不是反著把順序表列印一邊,而是在內從中真實現實值得翻轉。
思想是:定義乙個低位low,乙個高位high。迴圈條件(low
9.查詢函式find
要查詢乙個數,順序表不能空,利用迴圈,選擇語句即可查出元素,否者返回-1.
10.清理clean和摧毀destroy
清理是讓順序表裡為空(順序表為空不一定要讓其中的元素得到釋放,在棧區的元素,在函式結束由系統釋放),讓順序表為空就讓其len為0;
摧毀函式是在清理完成之後,必須手動釋放自己開闢的空間(malloc動態開闢的空間在堆區),list->base 賦空,預防野指標。
資料結構 順序表
順序表的特徵 1由唯一的表名標識 2佔據一塊連續的儲存空間 3資料順序存放,元素之間有先後關係 定義動態的順序表 define maxsize 100 typedef struct sqlist 這個結構體型別存放的是順序表的資訊和順序表的資料 初始化順序表 void initsqlist sqli...
資料結構 順序表
順序表示最簡單的乙個資料結構,直接貼 吧,因為比較簡單。include include typedef struct sqlist sqlist void initlist sqlist l l length 0 void getelem sqlist l 初始化 l length j printf...
資料結構順序表
include include include include include include include include include include include include include include using namespace std define maxn 100000...