順序表是資料結構裡最基礎的,今天分享關於順序表的一些操作:
順序表是用一段實體地址連續的儲存單元依次儲存資料元素的線性結構,一般情況下採用陣列儲存。在陣列上完成資料的增刪查改。
因為順序表又分為靜態和動態,而靜態的順序表使用的是定長陣列儲存,而動態順序表使用動態開闢的陣列儲存,生活中常常不知道資料規模的時候居多,需要使用的時候動態擴容,所以靜態順序表侷限性更大。
下面就主要講解動態順序表:
typedef
struct seqlistseqlist;
1.列印順序表
void
seqlistprint
(seqlist *ps)
for(
int i =
0; i < ps->size; i++
)//就是純遍歷一遍
}
2.順序表擴容
static
void
checkcapacity
(seqlist *ps)
//申請記憶體空間
int newcapacity =
(ps->capacity)*2
;int
* newarray =
(int*)
malloc
(sizeof
(int
)*newcapacity)
;assert
(newarray !=
null);
//斷言,申請失敗則直接終止
//把所有數字搬到新順序表中
for(
int i =
0; i < ps->size; i++
)//釋放原來空間
free
(ps->arr)
; ps->arr = newarray;
ps->capacity = newcapacity;
}
3.順序表的初始化
void
seqlistinit
(seqlist *ps,
int capacity)
}
4.銷毀順序表
void
seqlistdestroy
(seqlist *ps)
5.順序表的頭插
時間複雜度o(n)
void
seqlistpushfront
(seqlist *ps,
int v)
ps->arr[0]
= v;
ps->size++
;//size++一定不要忘了
}
6.順序表的尾插
void
seqlistpushback
(seqlist *ps,
int v)
7.根據pos下標插入
時間複雜度o(n)
void
seqlistinsert
(seqlist *ps,
int pos,
int v)
ps->size++
; ps->arr[pos]
= v;
}
8.順序表的尾刪
void
seqlistpopback
(seqlist* ps)
9.順序表的頭刪
時間複雜度o(n)
void
seqlistpopfront
(seqlist *ps)
ps->size--
;}
10.在指定pos處刪除元素
時間複雜度o(n)
void
seqlisterase
(seqlist *ps,
int pos)
ps->size--
;}
11.查詢指定元素並返回下標
int
seqlistfind
(seqlist *ps,
int v)
}return-1
;}
12.修改指定位置的元素
int
seqlistmodify
(seqlist *ps,
int pos,
int v)
13.刪除第乙個值為指定值的元素
void
seqlistremove
(seqlist *ps,
int v)
seqlisterase
(ps, dis)
;}
14.刪除所有值為指定值的元素
//這是個比較巧妙的方法
void
seqlistremoveall
(seqlist *ps,
int v)
} ps->size = j;
//j即為最後順序表的長度
}
順序表的大部分操作都如上所示,其中比較重要的就是順序表的擴容,頭插,尾插,頭刪,尾刪,要真正理解他每個操作實現的過程,死記**裡的迴圈條件那是沒用的,條件都是可以變的,順序表的下標隨機訪問很方便,這是他的一大優點。 資料結構之順序表
首先是標頭檔案seqlist.h ifndef seqlist h define seqlist h include includeusing namespace std define elemtype int define seqlist default size 10 typedef struc...
資料結構之順序表
順序表的思想容易了解,但是 不容易掌握,我這裡根據老師所提供的 進行一下簡單的總結 這個 包含順序表的查詢,插入,刪除,建表,輸出資料 includeusing namespace std define ok 1 define error 0 define overflow 2 typedef in...
資料結構之順序表
順序表就是按照順序儲存方式儲存的線性表,該線性表的結點按照邏輯次序一次存放在計算機的一組連續的儲存單元中如下圖 由於順序表是一次存放的,只要知道了該順序表的首位址以及每個資料元素所占用的儲存長度,那麼我們就很容易計算出任何乙個資料元素 也就是資料繫結點 的位置。1 結點資料型別 public cla...