关注+星标 不错过任何一次推送!
数据结构是相互之间存在一种或多种特定关系的数据元素的集合。
线性表
线性表:List,零个或多个数据元素的有限序列。
⏩ 顺序表:一段地址连续的存储单元依次存储线性表的数据元素。
#define MAXSIZE 100 //表的最大长度
typedef int data_t;
typedef struct{
data_t data[MAXSIZE]; //表的存储空间
int last; //表的当前长度
} *seqlist_t
⏩ 单链表:结点存储了数据元素和后继元素的存储地址,链接成表。
typedef int data_t;
typedef struct node{
data_t data; //存放数据
struct node *next; //存放后继结点地址
} *linklist_t
⏩ 双链表:结点存储了数据元素,以及前驱和后继元素的存储地址,链接成表。
typedef int data_t;
typedef struct node{
data_t data; //存放数据
struct node *prior; //存放前驱结点地址
struct node *next; //存放后继结点地址
} *dlinklist_t
栈
栈:Stack,是限定仅在表尾进行插入和删除操作的线性表。
⏩ 顺序栈:一段地址连续的存储单元,由数组定义,配合数组下标表示栈顶指针。
#define MAXSIZE 100 //栈的最大长度
typedef int data_t;
typedef struct{
data_t data[MAXSIZE]; //栈的存储空间
int top; //栈的栈顶位置
} *seqstack_t
⏩ 链式栈:只能在链表头部进行插入和删除操作的单链表,链表尾部就是栈底,链表头指针就是栈顶指针。
typedef int data_t;
typedef struct node{
data_t data; //存放数据
struct node *next; //存放后继结点地址
} *linkstack_t
队列
队列:Queue,是只允许在一端进行插入操作,另一端进行删除操作的线性表。
⏩ 顺序队列:一段地址连续的存储单元,由数组定义,配合数组下标表示队头和队尾。
#define MAXSIZE 100 //队列的最大长度
typedef int data_t;
typedef struct{
data_t data[MAXSIZE]; //队列的存储空间
int front, rear; //队头队尾的位置
} *seqqueue_t
⏩ 链式队列:只能在链尾插入、链头删除元素的单链表。
typedef int data_t;
typedef struct qnode{ //队列的结点结构
data_t data; //存放数据
struct qnode *next; //存放后继结点地址
} *qnode_t;
typedef struct{ //队列的链表结构
qnode_t front, rear; //队头队尾指针
} *linkqueue_t
二叉树
二叉树:Binary Tree,是n(n≥0)个节点的有限集合,它或者是空集(n=0),或者是由一个根节点以及两棵互不相交的、分别称为左子树和右子树的二叉树组成。typedef int data_t;
typedef struct bnode{
data_t data; //存放数据
struct bnode *lchild,*rchild; //左右孩子指针
} *btree_t;
往期推荐
●
●
●
●
●
●
●
●






扫二维码|关注我们
微信号|andyxi_linux
专注于嵌入式开发技术

分享、在看与点赞
只要你点,我们就是胖友
