資料結構 動態順序表增刪查改實現

2021-10-06 04:08:19 字數 2832 閱讀 5115

一、概念及機構

順序變是一種線性表,首先介紹線性表的概念:

線性表:線性表(linear list)是n個具有相同特性的資料元素的有限序列。 線性表是一種在實際中廣泛使用的資料結構常見的線性表:順序表、鍊錶、棧、佇列、字串…

線性表在邏輯上是線性結構,也就說是連續的一條直線。但是在物理結構上並不一定是連續的,線性表在物理上儲存時,通常以陣列和鏈式結構的形式儲存。

順序表:順序表是用一段實體地址連續的儲存單元依次儲存資料元素的線性結構,一般情況下採用陣列儲存。在陣列上完成資料的增刪查改。

順序表一般可以分為:

靜態順序表:使用定長陣列儲存。

動態順序表:使用動態開闢的陣列儲存。

順序表的優缺點:

優點

訪問速度高效,通過下標來直接儲存。

方法簡單,基於陣列,容易實現

缺點

中間/頭部的插入刪除,時間複雜度為o(n)。

增容需要申請新空間,拷貝資料,釋放舊空間。會有不小的消耗。

增容一般是呈2倍的增長,勢必會有一定的空間浪費。例如當前容量為100,滿了以後增容到200,我們再繼續插入了5個資料,後面沒有資料插入了,那麼就浪費了95個資料空間。

一、**實現

seqlist.h

#pragma once

#include

#include

#include

typedef

unsigned

int sldatatype;

// 順序表的動態儲存

typedef

struct seqlist

seqlist;

// 基本增刪查改介面

// 順序表初始化

void

seqlistinit

(seqlist* psl)

;// 順序表銷毀

void

seqlistdestory

(seqlist* psl)

;// 順序表列印

void

seqlistprint

(seqlist* psl)

;// 檢查空間,如果滿了,進行增容

void

checkcapacity

(seqlist* psl)

;// 順序表尾插

void

seqlistpushback

(seqlist* psl, sldatatype x)

;// 順序表尾刪

void

seqlistpopback

(seqlist* psl)

;// 順序表頭插

void

seqlistpushfront

(seqlist* psl, sldatatype x)

;// 順序表頭刪

void

seqlistpopfront

(seqlist* psl)

;// 順序表查詢

intseqlistfind

(seqlist* psl, sldatatype x)

;// 順序表在pos位置插入x

void

seqlistinsert

(seqlist* psl, size_t pos, sldatatype x)

;// 順序表刪除pos位置的值

void

seqlisterase

(seqlist* psl, size_t pos)

;

seqlist.c

#include

"seqlist.h"

// 順序表初始化

void

seqlistinit

(seqlist* psl)

// 順序表銷毀

void

seqlistdestory

(seqlist* psl)

// 順序表列印

void

seqlistprint

(seqlist* psl)

// 檢查空間,如果滿了,進行增容

void

checkcapacity

(seqlist* psl)

// 順序表尾插

void

seqlistpushback

(seqlist* psl, sldatatype x)

// 順序表尾刪

void

seqlistpopback

(seqlist* psl)

// 順序表頭插

void

seqlistpushfront

(seqlist* psl, sldatatype x)

// 順序表頭刪

void

seqlistpopfront

(seqlist* psl)

// 順序表查詢

intseqlistfind

(seqlist* psl, sldatatype x)

return-1

;}// 順序表在pos位置插入x

void

seqlistinsert

(seqlist* psl, size_t pos, sldatatype x)

// 順序表刪除pos位置的值

void

seqlisterase

(seqlist* psl, size_t pos)

資料結構 順序表 增刪查改

include include include include list.h 函式名 createlist 函式功能 建立線性表 引數 無 list createlist void return plist 函式名 destroylist 函式功能 銷毀線性表 函式返回值 無。void destro...

資料結構 順序表的建立,增刪查改

順序表 1 順序表的定義 1 順序儲存方法 即把線性表的結點按邏輯次序依次存放在一組位址連續的儲存單元裡的方法。2 順序表 sequential list 用順序儲存方法儲存的線性表簡稱為順序表 sequential list 2 結點ai 的儲存位址 不失一般性,設線性表中所有結點的型別相同,則每...

實現順序表的增刪查改

線性表分為兩種 順序表 順序儲存 和鍊錶 鏈式儲存 這裡實現一下順序表管理資料的增刪查改操作 標頭檔案自定義標頭檔案中一般存放自定義函式的函式宣告 sqlist.h pragma once include include include typedef int sqldatatype typedef...