
Date Structures
文章平均质量分 76
Hao_09
这个作者很懒,什么都没留下…
展开
-
两栈共享空间
#include #include #define OK 1#define ERROR 1#define TRUE 1#define FALSE 1typedef int Status;typedef int SElemType;#define MAXSIZE 20 /*存储空间初始分配量*//*两栈共享空间结构*/ty原创 2015-01-19 22:50:00 · 945 阅读 · 0 评论 -
双向链表
双向链表定义:在单链表的每个结点里再增加一个指向其直接前驱的指针域prior。这样形成的链表中有两个方向不同的链,称为双向链表。1 创建双向链表 2 打印链表 3 判断链表是否为空 4 计算链表长度 5 向链表插入节点 6 从链表删除节点typedef int ElemType;typedef struct LNode{ ElemType原创 2015-01-11 13:50:18 · 1049 阅读 · 0 评论 -
顺序栈
栈(或称堆栈): 是一种仅允许在一端进行插入和删除运算的线性表, 遵循后进先出(Last In First Out,LIFO)的原则。栈顶:栈中可以进行插入和删除的那一端,即线性表的表尾。栈底:栈中不可以进行插入和删除的那一端,即线性表的表头。进栈(或称入栈、压栈):向一个栈插入新元素,即把新元素放到栈顶元素的上面,使其成为新的栈顶元素。出栈(或称退栈):一个栈删除元素,即把栈顶元原创 2015-01-11 19:07:53 · 992 阅读 · 4 评论 -
顺序线性表
#include #include #define OK 1#define ERROR 1#define TRUE 1#define FALSE 1typedef int Status;typedef int ElemType;#define MAXSIZE 20 /*存储空间初始分配量*/typedef struct { ElemType data[MAXS原创 2015-01-19 21:52:10 · 1272 阅读 · 0 评论 -
链队列
队列(Queue)也是一种运算受限的线性表。它只允许在表的一端进行插入,而在另一端进行删除。允许删除的一端称为队头(front),允许插入的一端称为队尾(rear)。队列初始化销毁队列将队列清空判断队列是否为空求队列的长度入队出队遍历队列主程序程序运行结果#include #include #include #define OK 1原创 2015-01-20 22:56:36 · 892 阅读 · 0 评论 -
数据结构之数组
数据结构是专门研究数据存储的问题数据的存储包括两方面 个体的存储+个体关系的存储算法是对存储数据的操作 线性 连续存储【数组】 优点 存取速度很快 缺点 插入删除元素很慢 事先必须知道数组的长度原创 2015-01-07 11:51:29 · 945 阅读 · 0 评论 -
单链表
链表 定义: n个结点离散分配,彼此通过指针相连,每个结点只有一个前驱结点,每个结点只有一个后续结点,首结点没有前驱结点,尾结点没有后续结点专业术语:首结点:第一个有效结点尾结点:最后一个有效结点头结点:头结点是为了操作的统一与方便而设立的,放在第一个元素结点之前,其数据域一般无意义(当然有些情况下也可存放链表的长度、用做监视哨等等)。有了头结点后,对在第一个元素原创 2015-01-08 19:22:00 · 1143 阅读 · 0 评论 -
循环队列
将一维数组空间想象为一个首尾相接的圆环,存储在其中的队列称为循环队列。在循环队列中进行出队、入队操作时,头尾指针仍要加1。只不过当头尾指针指向数组上界(MAXQSIZE-1)时,其加1操作的结果是指向数组的下界0。循环队列的结构初始化一个空队列将队列清空判断队列是否为空返回队列的长度入队出队遍历队列主函数程序运行结果#include #in原创 2015-01-20 21:28:42 · 1189 阅读 · 0 评论 -
KMP模式匹配算法
Knuth-Morris-Pratt 字符串查找算法,简称为 “KMP算法”,常用于在一个文本串S内查找一个模式串P 的出现位置,这个算法由Donald Knuth、Vaughan Pratt、James H. Morris三人于1977年联合发表,故取这3人的姓氏命名此算法。整个KMP的重点就在于当某一个字符与主串不匹配时,我们应该知道j指针要移动到哪里。如图:C和D不匹配了,我们要原创 2015-01-24 20:38:11 · 1219 阅读 · 0 评论 -
树和二叉树定义、基本术语和性质
树的定义和基本术语•树:是一类重要的非线性数据结构,是以分支关系定义的层次结构。 •根:树(tree)是n(n>=0)个结点的有限集T,对于非空树,其中有且仅有一个特定的结点,称为树的根(root)。•子树:当n>1时,其余结点可分为m(m>0)个互不相交的有限集T1,T2,……Tm,其中每一个集合本身又是一棵树,称为根的子树(subtree)。每棵子树的根结点有且仅有一个直接前驱原创 2015-01-25 22:24:00 · 3174 阅读 · 0 评论 -
二叉排序树(概念,查找,插入,删除)
查找基本概念查找表:由同一类型的数据元素构成的集合。对查找表的常用操作:查询元素是否存在、查询元素属性、插入一个数据元素、删除一个数据元素。查找:也叫检索,是根据给定的某个值,在表中确定一个关键字等于给定值的数据元素。关键字:可以标识一个数据元素的某个数据项。主关键字:可以唯一地识别一个数据元素的关键字。静态查找表:只进行查询某元素在表中与否或检索某元素的各种属性操作的表。原创 2015-05-09 14:26:59 · 1747 阅读 · 0 评论 -
链栈
栈的链式存储结构称为链栈,它是操作受限的单链表,其插入和删除操作仅限制在表头位置上进行。链栈通常用不带头结点的单链表来实现。栈顶指针就是链表的头指针。1.相关声明2.初始化,设置一个空栈3.判断链栈是否为空4.进栈5.出栈6.读取栈顶元素7.测试语言8.程序运行结果1.#include #include #include #define OK 1原创 2015-01-14 13:31:16 · 1416 阅读 · 0 评论 -
遍历二叉树(四种方式:前序、中序、后序、层序)
二叉树顺序存储结构二叉树的顺序存储结构就是用一维数组存储二义树中的结点并且结点的存储位置,也就是数组的下标要能体现结点之间的逻辑关系,比如双亲与孩子的关系,左右兄弟的关系等。顺序存储结构一般只用于完全二叉树。将这棵二叉树存入到数组中,相应的下标对应其同样的位置: 二叉链表typedef struct BiTNode /* 结点结构 */{ TElemType原创 2015-05-06 21:21:29 · 5476 阅读 · 0 评论 -
常见经典排序算法学习总结(插入、shell、冒泡、选择、归并、快排等)
博主在学习过程中深感基础的重要,经典排序算法是数据结构与算法学习过程中重要的一环,这里对笔试面试最常涉及到的7种排序算法(包括插入排序、希尔排序、选择排序、冒泡排序、快速排序、堆排序、归并排序)进行了详解。每一种算法都有基本介绍、算法原理分析、算法代码。插入排序1)算法简介插入排序(Insertion Sort)的算法描述是一种简单直观的排序算法。它的工作原理是通过构建有序序列,对原创 2015-08-04 17:53:22 · 4200 阅读 · 0 评论