数据结构是相互之间存在一种或多种特定关系的数据元素的集合。
线性表
线性表: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;
审核编辑:汤梓红
-
嵌入式
+关注
关注
5066文章
19001浏览量
302685 -
代码
+关注
关注
30文章
4738浏览量
68307 -
数据结构
+关注
关注
3文章
572浏览量
40082
原文标题:不同数据结构的定义代码
文章出处:【微信号:嵌入式攻城狮,微信公众号:嵌入式攻城狮】欢迎添加关注!文章转载请注明出处。
发布评论请先 登录
相关推荐
评论