嵌入式系统与单片机|技术阅读
登录|注册

您现在的位置是:嵌入式系统与单片机 > 技术阅读 > 不同数据结构的定义代码

不同数据结构的定义代码

关注+星标 不错过任何一次推送!

据结构是相互之间存在一种或多种特定关系的数据元素的集合。


线性表

线性表: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

专注于嵌入式开发技术

分享、在看与点赞

只要你点,我们就是胖友