今天來實現簡單的順序表地增刪查詢操作
1.在開始敲**前,首先要明確自己要幹嘛。
2.然後開始構思自己所要實現什麼樣的功能。
3.之後將之前構思的功能弄好框架。
4.最後再將每個框架的內容補充上。
標頭檔案
#include
#pragma once
#include
typedef
int sldatatype;
struct seqlist
;typedef
struct seqlist seqlist;
// 初始化
void
seqlistinit
(seqlist *sl, size_t capacity)
;//銷毀
void
seqlistdestroy
(seqlist *sl)
;// 尾插,插入在順序表的尾部
void
seqlistpushback
(seqlist *sl, sldatatype data)
;// 頭插,插入在順序表的頭部 ([0])
void
seqlistpushfront
(seqlist *sl, sldatatype data)
;// 尾刪,刪除順序表尾部的資料
void
seqlistpopback
(seqlist *sl)
;// 頭刪,刪除順序表頭部的資料
void
seqlistpopfront
(seqlist *sl)
;// 在 pos 所在的下標做資料插入
void
seqlistinsert
(seqlist *sl, size_t pos, sldatatype data)
;// 刪除 pos 所在的下標資料
void
seqlisterase
(seqlist *sl, size_t pos)
;// 查詢
// 從 0 開始的第乙個,如果找到了,返回資料所在的下標
// 如果沒找到 則返回-1
intseqlistfind
(seqlist *sl, sldatatype data)
;// 刪除第乙個遇到的 data資料
void
seqlistremove
(seqlist *sl, sldatatype data)
;// 修改,pos 所在的下標
void
seqlistmodify
(seqlist *sl, size_t pos, sldatatype data)
;// 列印
void
seqlistprint
(seqlist *sl)
;// 檢查空間是否足夠,不夠擴充套件空間
void
checkcapacity
(seqlist *sl)
;// 氣泡排序
void
seqlistbubblesort
(seqlist *sl)
;// 二分查詢(必須要是資料有序)
intseqlistbinarysearch
(seqlist *sl, sldatatype data)
;// 如果找到,返回資料所在下標,如果沒找到,返回-1
實現檔案
text.c
#include
"shunxubiao.h"
#include
#include
#include
#include
struct seqlist
;//初始化
void
seqlistinit
(seqlist *sl, size_t capacity)
//銷毀建立的所有資料
void
seqlistdestroy
(seqlist *sl)
//尾插
void
seqlistpushback
(seqlist *sl, sldatatype data)
//頭插
void
seqlistpushfront
(seqlist *sl, sldatatype data)
//sl->array[0] = data;
//sl->size++;
//第二種方法
//在pos為0處插入資料,即為頭插
seqlistinsert
(sl,
0, data);}
// 尾刪
void
seqlistpopback
(seqlist *sl)
// 頭刪
void
seqlistpopfront
(seqlist *sl)
sl->size--;}
//列印
void
seqlistprint
(seqlist *sl)
printf
("\n");
}//擴容
void
checkcapacity
(seqlist *sl)
//需要擴容
// 1. 申請新空間
int newcapacity = sl->capacity *2;
sldatatype *newarray =
(sldatatype *
)malloc
(sizeof
(sldatatype)
* newcapacity)
;assert
(newarray)
;// 2. 搬家
for(
int i =
0; i < sl->size; i++
)// 3.將老的空間釋放掉
// 以防造成記憶體洩漏
free
(sl->array)
;// 4. 儲存新的空間
sl->array = newarray;
sl->capacity = newcapacity;
}//查詢第乙個與data相等的資料,並返回下標
intseqlistfind
(seqlist *sl, sldatatype data)
}// 沒有找到
return-1
;}//在pos出插入資料
void
seqlistinsert
(seqlist *sl, size_t pos, sldatatype data)
sl->array[pos]
= data;
sl->size++;}
//刪除下標pos處的資料
void
seqlisterase
(seqlist *sl, size_t pos)
sl->size--;}
//刪除第乙個下標為data的資料
void
seqlistremove
(seqlist *sl, sldatatype data)
}//修改下標為pos的資料
void
seqlistmodify
(seqlist *sl, size_t pos, sldatatype data)
//氣泡排序
void
seqlistbubblesort
(seqlist *sl)}if
(bool ==1)
}}//二分查詢
intseqlistbinarysearch
(seqlist *sl, sldatatype data)
else
if(data < sl->array[mid]
)else
}return-1
;}
主函式
以下展示的是部分功能的實現,若有興趣,其他功能可由各位自行測試展現。
#include
"shunxubiao.h"
void
testseqlist()
intmain()
順序表的增刪查改
順序表實現 順序表是用一段實體地址連續的儲存單元依次儲存的線性結構,一般情況下採用陣列儲存。在陣列上完成資料的增刪查改。靜態順序表 使用定長陣列儲存 動態順序表 使用動態開闢的陣列儲存 靜態順序表適用於確定知道需要存多少資料的場景。靜態順序表的定長陣列導致n定大了,空間開多了浪費,開少了不夠用。首先...
實現順序表的增刪查改
線性表分為兩種 順序表 順序儲存 和鍊錶 鏈式儲存 這裡實現一下順序表管理資料的增刪查改操作 標頭檔案自定義標頭檔案中一般存放自定義函式的函式宣告 sqlist.h pragma once include include include typedef int sqldatatype typedef...
實現對順序表的增刪查改
線性表 連續儲存 線性表是n個具有相同特性的資料元素的有限序列.線性表是一種在實際中廣泛使用的資料結構,常見的線性表 順序表,鍊錶,棧,佇列,字串 線性表在邏輯上是線性結構,也就是說是連續的一條直線,但是在物理結構上並不一定是連續的,線性表在物理上儲存時,通常以陣列和鏈式結構的形式儲存 順序表 以陣...