seplistd.h
#pragma once
#include#include#includetypedef int datatype;
typedef struct seqlistd
seqlistd,*pseqlistd;
size_t它是一種「整型」型別,裡面儲存的是乙個整數,就像int, long那樣。這種整數用來記錄乙個大小(size)。size_t的全稱應該是size type,就是說「一種用來記錄大小的資料型別」。
通常我們用sizeof(***)操作,這個操作所得到的結果就是size_t型別。
因為size_t型別的資料其實是儲存了乙個整數
test.h
#include"seqlistd.h"
//順序表的初始化
void seqlistdinit(pseqlistd pseq,int capacity)
pseq->_capacity = capacity;
pseq->_size = 0;
}//動態增容
void checkcapacity(pseqlistd pseq)
//尾插
void seqlistdpushback(pseqlistd pseq,int data)
pseq->_pdata[pseq->_size] = data;
pseq->_size++;
}//尾刪
void seplistpopback(pseqlistd pseq)
//判斷是否為空,為空返回true,否則返回false
int seqlistdempty(pseqlistd pseq)
//獲取有效數字的個數
int seqlistdsize(pseqlistd pseq)
//獲取容量
int seqlistdcapacity(pseqlistd pseq)
//清空順序表中的所有元素
void seqlistdclear(pseqlistd pseq)
//銷毀順序表
void seqlistddestroy(pseqlistd pseq)
//順序表任意位置插入元素
void seqlistdinsert(pseqlistd pseq,int pos ,int data)
for(i=pseq->_size ;i>=pos;i--)
pseq->_pdata[pos] =data;
}//順序表任意位置刪除元素
void seqlistderase(pseqlistd pseq,int pos ,int data)
}}//列印順序表
從資料在物理記憶體上的儲存形式線性表可以分為:
順序表和煉表
用一段位址連續的儲存單元依次儲存元素的線性結構。
所以順序表分為靜態順序表和動態順序表
一種鏈式儲存的線性表,用一組位址任意的儲存單元放線性表的元素,成儲存單元為乙個節點
鍊錶分類:
單鏈表(帶頭節點和不帶頭結點)
雙鏈表(帶頭節點和不帶頭結點)
雙向迴圈鍊錶(帶頭節點和不帶頭結點)
順序表支援隨機訪問,單鏈表不行
順序表的插入刪除效率很低,時間複雜度為o(n)(除了尾插尾刪),單鏈表的插入刪除效率很高o(1)
順序錶比單鏈表的cpu快取記憶體效率更高
資料結構 動態順序表
pragma once include include includetypedef int datatype typedef struct seqlist seqlist,psseqlist void seqlistinit psseqlist ps,int capacity 初始化鍊錶 void...
資料結構 動態順序表
大家有沒有發現上次靜態順序表有一定的缺陷,它會浪費很多的空間,比如我們只有10個元素但我們申請元素申請100個,這樣我們會浪費90個空間,而動態順序表我們插入多少個我們就申請多少個,大大的節省了我們大的空間。首先我們來看看動態順序表的結構 typedef struct deqlist deqlist...
資料結構 動態順序表
在說順序表之前我們先來了解一下線性表,線性表就是n個型別相同的資料元素的有限序列.線性表在邏輯上是線性的結構,可以理解為一條直線,但是在物理上不一定是連續的,物理上通常是以陣列和鏈式結構形式儲存 比如 順序表是用一段實體地址連續的儲存單元依次儲存資料元素的線性結構,一般情況下採用陣列儲存。在陣列上完...