数据结构是相互之间存在一种或多种特定关系的数据元素的集合。
线性表
线性表: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;
审核编辑:汤梓红
全部0条评论
快来发表一下你的评论吧 !