数据结构是相互之间存在一种或多种特定关系的数据元素的集合。
线性表
线性表: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;
审核编辑:汤梓红
-
嵌入式
+关注
关注
5186文章
20146浏览量
328784 -
代码
+关注
关注
30文章
4941浏览量
73140 -
数据结构
+关注
关注
3文章
573浏览量
41367
原文标题:不同数据结构的定义代码
文章出处:【微信号:嵌入式攻城狮,微信公众号:嵌入式攻城狮】欢迎添加关注!文章转载请注明出处。
发布评论请先 登录
C语言与数据结构
数据结构是什么?数组为什么要有数组
数据结构是什么_数据结构有什么用
为什么要学习数据结构?数据结构的应用详细资料概述免费下载
什么是数据结构?为什么要学习数据结构?数据结构的应用实例分析
NetApp的数据结构是如何演变的
Linux内核中使用的数据结构
epoll的基础数据结构

不同数据结构的定义代码
评论