
数据结构与算法
清风飏
有条理,有规划,忙而不乱
展开
-
非线性逻辑结构-特殊的二叉树结构:堆、哈夫曼树、二叉搜索树、平衡二叉搜索树、红黑树、线索二叉树
转载:http://blog.youkuaiyun.com/LG1259156776/article/details/47271673在上一篇数据结构的博文《数据结构(三):非线性逻辑结构-二叉树》中已经对二叉树的概念、遍历等基本的概念和操作进行了介绍。本篇博文主要介绍几个特殊的二叉树,堆、哈夫曼树、二叉搜索树、平衡二叉搜索树、红黑树、线索二叉树,它们在解决实际问题中有着非常重要的应用。本文主要从概念转载 2017-11-28 19:11:50 · 3437 阅读 · 0 评论 -
C 创建链表的四种方式
C语言数据结构-创建链表的四种方法结点类型:typedef int datatype;typedef struct NODE{ datatype data; struct NODE *next; }Node,*LinkList;1、不带头结点的头插入法创建链表。 每创建一个结点,都使该结点成为头结点,这样头转载 2017-09-10 11:49:24 · 877 阅读 · 0 评论 -
数据结构_线性表_链式存储_单向循环链表的基本操作
1.概述: 对于一个循环链表来说,其首节点和末节点被连接在一起。这种方式在单向和双向链表中皆可实现。要转换一个循环链表,可以选择开始于任意一个节点然后沿着列表的任一方向直到返回开始的节点。再来看另一种方法,循环链表可以被视为“无头无尾”。这种列表很利于节约数据存储缓存, 假定你在一个列表中有一个对象并且希望所有其他对象迭代在一个非特殊的排列下。 指向整个列表的指针可以被称作访问指针。 用单向链原创 2016-05-06 16:37:33 · 1848 阅读 · 0 评论 -
数据结构_线性表_链式存储_双向循环链表的基本操作
//双向链表,将头结点和尾结点链接起来,就构成了双向循环链表 //双向循环链表是将头结点的前驱指针指向了尾结点,同时将尾结点的后劲指针指向了头结点. //空表,头结点的前驱和后继指针均指向了自己,这也是判断双向循环链表是否为空的条件, //双向循环链表具有对称性 //缺点,是要付出空间代价的双向链表也叫双链表,是链表的一种,它的每个数据结点中都有两个指针,分别指向直接后继和直接前驱。所以,从原创 2016-05-09 09:29:11 · 2330 阅读 · 0 评论 -
数据结构_线性表_链式存储_单链表 的基本操作
单链表的简介 单链表是一种链式存取的数据结构,用一组地址任意的存储单元存放线性表中的数据元素链表中的数据是以结点来表示的,每个结点的构成:元素(数据元素的映象) + 指针(指示后继元素存储位置),元素就是存储数据的存储单元,指针就是连接每个结点的地址数据。 以“结点的序列”表示线性表称作线性链表(单链表) 单链表是链式存取的结构,为找第 i 个数据元素,必须先找到第 i-1 个数据元素。 因原创 2016-05-05 22:45:24 · 1485 阅读 · 0 评论 -
数据结构_线性表_顺序表 的创建,插入,删除,查找
首先要了解顺序结构,顺序机构就是将表中元素一个接一个的存入一组连续的存储单元中,这种存储结构是顺序结构。 其次要了解线性表的线性 线性表是最基本、最简单、也是最常用的一种数据结构。 线性表中数据元素之间的关系是一对一的关系,即除了第一个和最后一个数据元素之外,其它数据元素都是首尾相接的(注意,这句话只适用大部分线性表,而不是全部。比如,循环链表逻辑层次上也是一种线性表(存储层次上属于链式存储)原创 2016-05-04 21:13:02 · 15010 阅读 · 2 评论 -
数据结构_线性表_顺序队列_循环队列_链队列
个位看管,由于队列操作相对简单,我啥也不多说,直接上代码,欢迎验证!!!#pragma mark --abstract//队列(queue)是只允许在表的一端进行插入,在表的另一端进行删除的线性表,允许插入的一端称为队尾(rear)//允许删除的一端叫做队头(font),不含元素的队列称为空队列//队列的特点是先进先出(FIFO线性表)#pragma mark --分类//1.队列的顺序存原创 2016-05-09 10:19:44 · 1162 阅读 · 0 评论 -
数据结构_线性表_顺序存储之1顺序栈2共享栈_链式存储之链栈_栈的应用举例
1>//栈是先进后出,后进先出的线性表 简称LIFO线性表 //栈的顺序存储结构成为顺序栈(sequebtial stack). //顺序栈利用一组地址连的存储单元依次存放从栈底到 栈顶的数据元素,通常用一维数组存放栈的元素 //”指针”top并非指针,而是表示栈顶元素的当前位置 //top不是指针型变量而是整形变量,top=0空栈,top=MaxSize 表示满栈,当top>ma原创 2016-05-09 10:11:51 · 1233 阅读 · 0 评论 -
数据结构_非线性结构_图
阅读目录一,图的定义二,图相关的概念和术语三,图的创建和遍历四,最小生成树和最短路径五,算法实现这一篇我们要总结的是图(Graph),图可能比我们之前学习的线性结构和树形结构都要复杂,不过没有关系,我们一点一点地来总结,那么关于图我想从以下几点进行总结:1>图的定义? 2>图相关的概念和术语? 3>图的创建和遍历? 4>最小生成树和最短路径? 5>算法实现?一,图的定义什么是图呢原创 2016-05-12 10:15:44 · 1794 阅读 · 0 评论 -
时间复杂度和空间复杂度分析
转载:http://blog.sina.com.cn/s/blog_4b146a9c010143mn.html总结:这里必须注意的是:时间复杂度是整个过程当中循环嵌套次数最多的,例如:public void suixiangMethod(int n){ printsum(n);//1.1 for(int i= 0; i printsum(转载 2016-04-19 16:06:26 · 752 阅读 · 0 评论 -
八大排序算法
转载处 http://blog.youkuaiyun.com/hguisu/article/details/7776068转载 2016-04-18 09:46:17 · 721 阅读 · 0 评论 -
约瑟夫环
问题描述:已知n个人围坐在一张圆桌周围,从编号为1的人开始报数,数到m的那个人出列。下一个人从1开始报数,数到m的人继续出列,以此类推直至全部人出列。求出列顺序?解决方案:1、最简单明了的办法就是用循环链表存储这n个人。数到m的人出列,只需将该结点从链表里剔除即可,然后继续往后报数,直到链表只剩下一个结点时结束。具体代码如下:[cpp] view p转载 2016-05-03 16:32:52 · 338 阅读 · 0 评论 -
五大常用算法
【算法】—-贪心算法(背包问题)2014年05月27日 ⁄ 综合 ⁄ 共 1583字 ⁄ 字号 小 中 大 ⁄ 评论关闭 【前言:】 上一篇博客从概念上说了一下贪心算法,这次我们通过一个实例,来进一步帮助大家理解贪心算法。 一、【经典实例:】(背包问题) 给定n个物品和一个容量为C的背包,原创 2016-04-15 14:18:09 · 572 阅读 · 0 评论 -
数据结构-非线性-树-二叉树
//概述//线性结构用于描述数据元素之间的线性关系,实际应用的数据元素之间的关系错综复杂,很难用线性关系描述,这就用到非线性结构,//树它描述客观世界中事务之间的层次关系,一切具有层次关系的问题都可以用树来描述//例如,家族的族谱,各种社会结构,(操作系统的文件系统中,用树表示目录结构)(编译程序中,用树表示源程序的语法结构)#pragma mark --树的定义//树,是有n(n>=0)个原创 2016-05-09 11:44:39 · 999 阅读 · 0 评论 -
排序算法
排序算法是按照一定的规则,按照递增或者递减的顺序进行排序冒泡排序冒泡排序是所有排序算法中最简单,最基本的一种,其排序流程:(1)对数组中的各个数据,依次比较相邻的两个元素的大小(2)如果前面的数据比后面的大,就进行交换,经过一轮的多次比较排序,便可把最小的数据排好,一轮排序唯一肯定的是能把最小的数据的放在前面(3)然后,再用同样的方法也,就是(1)(2)步骤,把剩下的数据进行排原创 2017-11-20 20:00:18 · 474 阅读 · 0 评论