
数据结构
本_末
这个作者很懒,什么都没留下…
展开
-
队列的顺序存储结构
1.队列的定义 队列是只允许在一端进行插入操作,而在另一端进行删除操作的线性表。队列是一种先进先出(FIFO)的线性表,允许插入的一端成为队尾,允许删除的一端成为队头。原创 2018-01-30 20:20:40 · 361 阅读 · 0 评论 -
队列的链式存储结构
1.定义 队列的链式存储结构,其实就是线性表的单链表,只不过它只能尾进头出而已,我们把它简称为链队列。队头指针指向链队列的头结点,队尾指针指向终端结点。 空队列时,front和rear都指向头结点 2.入队操作 int QueneEnter(LinkQuene *Q, int e){ Node *s = (Node *)malloc(sizeof(Node))原创 2018-02-01 13:34:51 · 558 阅读 · 0 评论 -
链表的一些基本操作
1.链表的初始化 链表有结点组成,每一个结点由数据域和指针域组成,指针域指向下一个结点,链表中有一个结点叫做头结点,指向头结点的指针成为头指针,初始化即为这个头指针分配一个地址。 int ListInit(LinkList *L){ (*L) = (LinkList)malloc(sizeof(Node));//为头指针分配了一个地址 if((*L) == NULL)原创 2018-01-23 20:35:17 · 175 阅读 · 0 评论 -
链表的一些基本接口
头文件:#ifndef _LINKLIST_H_#define _LINKLIST_H_#define SUCCESS 0#define FAILURE -1struct node{ int data; struct node *next;};typedef struct node Node;typedef Node *LinkList;int原创 2018-01-23 20:19:42 · 325 阅读 · 0 评论 -
线性表的顺序存储结构
1.顺序存储定义 线性表的顺序存储结构,指的是用一段地址连续的存储单元依次存储线性表的数据元素。2.顺序表的一些基本操作 (1)线性表的初始化 定义一个结构体,结构体里面存储数组的起始地址,线性表的大小和线性表的长度。int SeqInit(sq *s){ (*s) = (sq)malloc(sizeof(seq));//为定义的结构体指针初始化,分配一个地址原创 2018-01-25 20:36:42 · 173 阅读 · 0 评论 -
栈
一.栈的定义 栈是限定仅在表尾进行插入和删除操作的线性表。我们把允许插入和删除的一端成为栈顶(top),另一端称为栈底(bottom),不含任何数据元素的栈成为空栈。栈又称先进后出的线性表,简称为LIFO(Last In First Out)结构。栈的插入操作,叫做进栈,也称压栈,入栈。 栈的删除操作,叫做出栈,也称弹栈。 二.栈的链式存储结构 1.链栈的初始化: 首先要定义结构原创 2018-01-27 14:14:01 · 247 阅读 · 0 评论 -
栈的应用——四则运算表达式(逆波兰算法)
基本思路: 首先定义两个栈,一个存放数字,一个存放符号。 存放数字的栈: 只有当后面的一位是符号时才入栈,这是因为如果是一个多位数的情况。存放符号的栈: 1.当符号栈为空或者是a[i] 不是 ‘)’并且栈顶元素是‘(’时或者符号优先级大于栈顶元素的优先级时入栈。 2.当a[i] 是 ‘)’并且栈顶元素是‘(’时,弹出栈顶元素,即括号成对了,把左括号删除。 3.当a[i] 是 ‘)’原创 2018-01-27 15:18:43 · 415 阅读 · 0 评论 -
树
1.定义 树是n个结点的有限集。n=0时成为空树。在任意一棵非空树中: 有且只有一个特定的称为根的结点; 当n>1时,其余结点可分为m(m>0)个互不相交的有限集,其中每一个集合本身又是一棵树,并且成为根的子树。 2.结点的分类 结点拥有的子树数称为结点的度。度为0的结点称为叶节点或终端结点;度不为0的结点称为非终端结点或分支结点。除根节点之外,分支结点也称为内部结点。树的度是树内各原创 2018-02-03 19:12:52 · 191 阅读 · 0 评论