順序表的增刪查改

2021-09-02 10:39:42 字數 4235 閱讀 2453

今天來實現簡單的順序表地增刪查詢操作

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個具有相同特性的資料元素的有限序列.線性表是一種在實際中廣泛使用的資料結構,常見的線性表 順序表,鍊錶,棧,佇列,字串 線性表在邏輯上是線性結構,也就是說是連續的一條直線,但是在物理結構上並不一定是連續的,線性表在物理上儲存時,通常以陣列和鏈式結構的形式儲存 順序表 以陣...