線性表:(1)順序表【底層是連續的空間,所以進行元素的插入和刪除時,必須搬移大量的元素】:a、靜態順序表(底層空間受到限制)b、動態順序表(底層空間不受限制)
(2)鍊錶:任意位置的插入不需要搬移元素,不是連續的空間。
a、分類:單鏈表(乙個節點只有乙個指標,指向後乙個節點)帶頭節點的單鏈表和不帶頭節點的單鏈表;雙鏈表(每乙個節點有兩個指標,既儲存後乙個節點的位置,也儲存了前乙個節點的位置);
順序表中尾插的效率高,頭插還得整個元素進行搬移。
pseqlistd.h
typedef int datatype;
typedef unsigned int size_t;
typedef struct seqlistd
seqlistd, *pseqlistd
void seqlistdinit(pseqlistd pseq);
void seqlistdpushback(pseqlistd pseq, datatype data);
void seqlistdpopback(pseqlistd pseq);
int seqlistdempty(pseqlistd pseq);
int seqlistdsize(pseqlistd pseq);
// 清空順序表中的所有元素,注意不改變底層空間的大小
void seqlistdclear(pseqlistd pseq);
int seqlistdcapacity(pseqlistd pseq);
// 銷毀順序表
void seqlistddestroy(pseqlistd pseq);
// 檢測順序表是否需要增容
int checkcapacity(pseqlistd pseq);
void printseqlistd(pseqlistd pseq);
pseqlistd.c
# define _crt_secure_no_warnings 1
# include"pseqlistd.h"
# include
# include
# include
# include
void seqlistdinit(pseqlistd pseq)
int checkcapacity(pseqlistd pseq)
return 1; }
void seqlistdpushback(pseqlistd pseq, datatype data)
void seqlistdpopback(pseqlistd pseq)
pseq->_size--; }
int seqlistdempty(pseqlistd pseq)
int seqlistdsize(pseqlistd pseq)
void seqlistdclear(pseqlistd pseq)
int seqlistdcapacity(pseqlistd pseq)
void seqlistddestroy(pseqlistd pseq)
} void printseqlistd(pseqlistd pseq)
printf("\n"); }
test.c
# define _crt_secure_no_warnings 1
# include"pseqlistd.h"
void testseqlistd1()
void testseqlistd2()
void testseqlistd3()
void testseqlistd4()
int main()
結果:test1:
動態順序表
ifndef seqlist h define seqlist h define capacity 3 typedef struct seqlist typedef enum tag typedef struct findret void expendseqlist seqlist pseq 擴大容...
動態順序表
動態順序表 引用庫函式 include include 巨集定義 define list init size 4 define list add size 2 define overflow 2 typedef int elemtype elemtype元素型別 定義結構體 typedef stru...
動態順序表
順序表是在進算計記憶體總以陣列的形式儲存的線性表,是指用一組位址連續的儲存單元依次儲存資料元素的線性結構。線性表採用的順序儲存就稱之為順序表。順序表是將表中的節點依次存放在計算機記憶體中一組位址連續的儲存單元中。任務要求 實現乙個動態順序表 功能要求 表可以動態增長,尾插元素,尾刪元素,頭插元素,頭...