不同数据结构的定义代码

描述

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

线性表

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

 

  审核编辑:汤梓红

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分