最近才學的資料結構,自己寫出來順序表求大神指點指點有沒有優化的地方;增、刪、改、查;github上有原始碼:github源**
標頭檔案:
#pragma once
#include
#include
typedef
int sdatatype;
typedef
struct seqlist seqlist;
// 初始化/銷毀
// 初始化
// seqlist 是乙個變數的位址
// capacity 表示順序表的初始容量
void
seqlistinit
(seqlist *seqlist,
int capacity)
;void
seqlistdestroy
(seqlist *seqlist)
;// 增刪改查
// 插入
// 尾插
void
seqlistpushback
(seqlist *seqlist, sdatatype value)
;// 頭插
void
seqlistpushfront
(seqlist *seqlist, sdatatype value)
;// 中間插入,往 pos 所在的下標插入 value
void
seqlistinsert
(seqlist *seqlist,
int pos, sdatatype value)
;// 刪除
// 尾刪
void
seqlistpopback
(seqlist *seqlist)
;// 頭刪
void
seqlistpopfront
(seqlist *seqlist)
;// 刪除 pos 所在的下標的資料
void
seqlisterase
(seqlist *seqlist,
int pos)
;// 列印
void
seqlistprint
(const seqlist *seqlist)
;// 修改 pos 所在下標的資料為 value
void
seqlistmodify
(seqlist *seqlist,
int pos, sdatatype value)
;// 查詢
// 如果找到,返回第乙個找到的下標
// 如果沒找到,返回 -1
intseqlistfind
(const seqlist *seqlist, sdatatype value)
;// 找到並刪除第乙個遇到的 value
void
seqlistremove
(seqlist *seqlist, sdatatype value)
;// 判斷順序表是否為空
bool seqlistempty
(const seqlist *seqlist)
;// 返回資料個數
intseqlistsize
(const seqlist *seqlist)
;// 氣泡排序
void
seqlistbubblesort
(seqlist *seqlist)
;// 二分法
intseqlistbinaryfind
(seqlist *seqlist, sdatatype value)
;//刪除所有的
void
seqlistremoveall
(seqlist *seqlist, sdatatype value)
;
實現函式:
#include
"seqlist.h"
#include
#include
//擴容
static
void
checkcapacity
(seqlist *seqlist)
free
(seqlist->array)
; seqlist->array = array;
}void
seqlistinit
(seqlist *seqlist,
int capacity)
void
seqlistdestroy
(seqlist *seqlist)
void
seqlistpushback
(seqlist *seqlist, sdatatype value)
void
seqlistpopback
(seqlist *seqlist)
void
seqlistpushfront
(seqlist *seqlist, sdatatype value)
seqlist->array[0]
= value;
seqlist->size++;}
void
seqlistpopfront
(seqlist *seqlist)
seqlist->size--;}
void
seqlistinsert
(seqlist *seqlist,
int pos, sdatatype value)
seqlist->array[pos]
= value;
seqlist->size++;}
void
seqlisterase
(seqlist *seqlist,
int pos)
seqlist->size--;}
void
seqlistprint
(const seqlist *seqlist)
printf
("\n");
}void
seqlistmodify
(seqlist *seqlist,
int pos, sdatatype value)
intseqlistfind
(const seqlist *seqlist, sdatatype value)
return-1
;}void
seqlistremove
(seqlist *seqlist, sdatatype value)
}bool seqlistempty
(const seqlist *seqlist)
intseqlistsize
(const seqlist *seqlist)
static
swap
(int
*a,int
*b)void
seqlistbubblesort
(seqlist *seqlist)}if
(ret ==1)
break;}
}int
seqlistbinaryfind
(seqlist *seqlist, sdatatype value)
return-1
;}void
seqlistremoveall
(seqlist *seqlist, sdatatype value)
seqlist->size = idex;
}
測試
#define _crt_secure_no_warnings 1
#include
"seqlist.h"
#include
void
test1()
intmain()
C語言資料結構 順序表
資料結構的一些講解,供學習者參考,也順帶作為複習 線性表的順序儲存是指在記憶體中用位址連續的一塊儲存空間順序存放線性表的各元素,用這種儲存形式儲存的線性表稱為順序表。因為記憶體中的位址空間是線性的,因此,用物理上的相鄰實現資料元素之間的邏輯相鄰關係既是簡單又自然的。將資料儲存區data和指標last...
資料結構 順序表(C語言)
seqlist.h include include define maxsize 100 typedef struct seqlisttype void seqlistinit seqlisttype sl 初始化順序表 int seqlistlength seqlisttype sl 返回順序表的...
資料結構 順序表 C語言
1.規範的程式設計 標頭檔案 list.h 介面封裝 list.c 介面的測試 test.c 2.誰申請誰釋放 申請完畢空間,一定要主動釋放。3.解題思路 畫圖 分析步驟 偽 需要將偽 修改為真實可用的 1 大小固定,訪問方便 2 位址連續 儲存密度大 3 刪除或者插入時,需要移動元素 4 除第0個...