順序表 c語言資料結構

2021-09-05 08:39:37 字數 4058 閱讀 9608

最近才學的資料結構,自己寫出來順序表求大神指點指點有沒有優化的地方;增、刪、改、查;

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個...