數據結構是相互之間存在一種或多種特定關系的數據元素的集合。
線性表
線性表:List,零個或多個數據元素的有限序列。
順序表:一段地址連續的存儲單元依次存儲線性表的數據元素。
#defineMAXSIZE100 //表的最大長度
typedefintdata_t;
typedefstruct{
data_tdata[MAXSIZE]; //表的存儲空間
intlast; //表的當前長度
}*seqlist_t
單鏈表:結點存儲了數據元素和后繼元素的存儲地址,鏈接成表。
typedefintdata_t;
typedefstructnode{
data_tdata;//存放數據
structnode*next;//存放后繼結點地址
}*linklist_t
雙鏈表:結點存儲了數據元素,以及前驅和后繼元素的存儲地址,鏈接成表。
typedefintdata_t;
typedefstructnode{
data_tdata;//存放數據
structnode*prior; //存放前驅結點地址
structnode*next;//存放后繼結點地址
}*dlinklist_t
棧
棧:Stack,是限定僅在表尾進行插入和刪除操作的線性表。
順序棧:一段地址連續的存儲單元,由數組定義,配合數組下標表示棧頂指針。
#defineMAXSIZE100//棧的最大長度
typedefintdata_t;
typedefstruct{
data_tdata[MAXSIZE]; //棧的存儲空間
inttop;//棧的棧頂位置
}*seqstack_t
鏈式棧:只能在鏈表頭部進行插入和刪除操作的單鏈表,鏈表尾部就是棧底,鏈表頭指針就是棧頂指針。
typedefintdata_t;
typedefstructnode{
data_tdata; //存放數據
structnode*next;//存放后繼結點地址
}*linkstack_t
隊列
隊列:Queue,是只允許在一端進行插入操作,另一端進行刪除操作的線性表。
順序隊列:一段地址連續的存儲單元,由數組定義,配合數組下標表示隊頭和隊尾。
#defineMAXSIZE100//隊列的最大長度
typedefintdata_t;
typedefstruct{
data_tdata[MAXSIZE];//隊列的存儲空間
intfront,rear;//隊頭隊尾的位置
}*seqqueue_t
鏈式隊列:只能在鏈尾插入、鏈頭刪除元素的單鏈表。
typedefintdata_t;
typedefstructqnode{//隊列的結點結構
data_tdata;//存放數據
structqnode*next; //存放后繼結點地址
}*qnode_t;
typedefstruct{//隊列的鏈表結構
qnode_tfront,rear; //隊頭隊尾指針
}*linkqueue_t
二叉樹
二叉樹:Binary Tree,是n(n≥0)個節點的有限集合,它或者是空集(n=0),或者是由一個根節點以及兩棵互不相交的、分別稱為左子樹和右子樹的二叉樹組成。
typedefintdata_t;
typedefstructbnode{
data_tdata; //存放數據
structbnode*lchild,*rchild; //左右孩子指針
}*btree_t;
審核編輯:湯梓紅
-
嵌入式
+關注
關注
5198文章
20449瀏覽量
334051 -
代碼
+關注
關注
30文章
4968瀏覽量
73968 -
數據結構
+關注
關注
3文章
573瀏覽量
41589
原文標題:不同數據結構的定義代碼
文章出處:【微信號:嵌入式攻城獅,微信公眾號:嵌入式攻城獅】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
C語言與數據結構
什么是數據結構
數據結構是什么_數據結構有什么用
為什么要學習數據結構?數據結構的應用詳細資料概述免費下載
什么是數據結構?為什么要學習數據結構?數據結構的應用實例分析
NetApp的數據結構是如何演變的
Linux內核中使用的數據結構
epoll的基礎數據結構
不同數據結構的定義代碼
評論