
┈┈【数据结构与算法】
CHENG Jian
天将降大任于是人也,必先苦其心志,劳其筋骨,饿其体肤,空乏其身,行拂乱其所为,所以动心忍性,曾益其所不能。
展开
-
数据结构模版----单链表SimpleLinkList[带头结点&&面向对象设计思想](C语言实现)
链表中的数据是以节点来表示的,每个结点的构成:元素(数据元素的映象) + 指针(指示后继元素存储位置),元素就是存储数据的存储单元,指针就是连接每个结点的地址数据。以“结点的序列”表示线性表称作线性链表(单链表)单链表是链式存取的结构,为找第 i 个数据元素,必须先找到第 i-1 个数据元素。原创 2015-01-07 17:56:29 · 15961 阅读 · 0 评论 -
视觉直观感受 7 种常用的排序算法
转载自 视觉直观感受 7 种常用的排序算法 其他 可视化对比十多种排序算法(C#版) 程序员必须知道的8大排序和3大查找快速排序介绍快速排序是由东尼·霍尔所发展的一种排序算法。在平均状况下,排序 n 个项目要Ο(n log n)次比较。在最坏状况下则需要Ο(n2)次比较,但这种状况并不常见。事实上,快速排序通常明显比其他Ο(n log n) 算法更快,因为它的内部循转载 2016-03-12 23:11:04 · 2293 阅读 · 0 评论 -
深入理解计算机系统-之-数值存储(五)--浮点数在内存中的存储方式
前景回顾前面我们了解到依据CPU的端模式的架构不同,数据的存储的字节序也不同 BE big-endian 大端模式,最直观的字节序 地址低位存储值的高位,地址高位存储值的低位 ,数据填写时,不要考虑对应关系,只需要把内存地址从左到右按照由低到高的顺序写出,把值按照通常的高位到低位的顺序写出,两者对照,一个字节一个字节的填充进去。 LE little-endian 小端模式,则最符合人的原创 2016-02-21 17:19:14 · 6345 阅读 · 0 评论 -
环形加油站问题
问题城市的环形路有n个加油站,第i个加油站的油量用gas[i]来表示,你有如下的一辆车:它的油缸是无限量的,初始是空的它从第i个加油站到第i+1个加油站消耗油量为cost[i]现在你可以从任意加油站开始,路过加油站可以不断的加油,问是否能够走完环形路。如果可以返回开始加油站的编号,如果不可以返回-1。此题目来自于leetcode:https://oj.leetcode.com/problems/ga原创 2015-10-17 21:20:43 · 7181 阅读 · 0 评论 -
石子合并问题--动态规划;贪心
石子合并问题石子合并问题是最经典的DP问题。首先它有如下3种题型: (1)有N堆石子,现要将石子有序的合并成一堆,规定如下:每次只能移动任意的2堆石子合并,合并花费为新合成的一堆石子的数量。求将这N堆石子合并成分析:当然这种情况是最简单的情况,合并的是任意两堆,直接贪心即可,每次选择最小的两堆合并。本问题实际上就是哈夫曼的变形。(2)有N堆石子,现要将石子有序的合并成一堆,规定如下:每次只能移动相邻原创 2015-10-17 20:18:13 · 36937 阅读 · 8 评论 -
孩子分糖问题----
问题N个孩子站成一排,给每个人设定一个权重(已知)。按照如下的规则分配糖果: 1 ) 每个孩子至少分得一颗糖果 2)权重较高的孩子,会比他的邻居获得更多的糖果。问:总共最少需要多少颗糖果?请分析算法思路,以及算法的时间,空间复杂度是多少。 题目地址 https://leetcode.com/problems/candy/解析先每人发一颗糖。第一遍从前往后扫描,满足相邻两个小孩后面的权重原创 2015-10-18 11:23:29 · 2974 阅读 · 0 评论 -
hdu-1055----树染色问题color a tree(贪心)
题目Color a TreeProblem DescriptionBob is very interested in the data structure of a tree. A tree is a directed graph in which a special node is singled out, called the “root” of the tree, and there is a原创 2015-10-17 18:11:44 · 6098 阅读 · 1 评论 -
数据结构体模版---循环单链表
#include #include #include #include //#define DEBUG // 调试插桩信息宏///*////////////////////////////////////////////////////////////////////////////////// 带头结点的单链表结构体//////*///////////////////原创 2015-01-14 19:28:28 · 16484 阅读 · 0 评论 -
数据结构模版----单链表实现方式总结
前面我们提供了四种方式实现的单链表,有带头结点的不带头结点的,而单链表的结构体定义也有两种方式,那么这些实现方式,到底有什么区别呢,为什么会出现这么多种实现方式呢,下面我们就来细细体会一 单链表结构体的实现区别首先我们对比一下,单链表结构体①带length标识的单链表结构体typedef struct LinkList{ LinkListNode *m_head; /原创 2015-01-13 12:18:41 · 15849 阅读 · 0 评论 -
数据结构模版----单链表SimpleLinkList[不带头结点](C语言实现)
下面给出的是单链表不带头结点的另一种实现方式,也是最复杂的一种方式单链表结构体//#define DEBUG // 调试插桩信息宏typedef int ElemType; // 自定义数据类型//typedef struct LinkListNode* PLinkListNode; // 链表结点指针域// 链表结点数据域typedef struct Link原创 2015-01-11 16:00:44 · 16444 阅读 · 0 评论 -
数据结构模版----单链表SimpleLinkList[不带头结点&&伪OO](C语言实现)
上一篇写单链表是带头结点的,但是其他这种写法的单链表中,头结点其实无所谓了,因为我们的单链表结构体中增加了一项m_length下面的不加头结点的单链表奉上SimpleLinkList.h#ifndef __SIMPLELINKLIST_H___#define __SIMPLELINKLIST_H___#include #include #include #include原创 2015-01-08 17:53:24 · 15805 阅读 · 0 评论 -
数据结构模版----单链表SimpleLinkList[带头结点](C语言实现)
前面写的单链表结构体是重新设计的。包含头结点(或者头指针)以及链表长度的结构体,而我们通常实现的链表是直接把单链表结点结构体作为单链表来使用的,下面我们给出z这种实现方式,让我们一起来细细体会他们实现之间的区别单链表结构体typedef int ElemType; // 自定义数据类型//typedef struct LinkListNode* PLinkListNode; //原创 2015-01-11 12:24:50 · 17162 阅读 · 0 评论 -
二叉树的遍历详解(前序中序后序层次-递归和非递归)
二叉树二叉树是一种非常重要的数据结构,很多其它数据结构都是基于二叉树的基础演变而来的。对于二叉树,有前序、中序以及后序三种遍历方法。因为树的定义本身就是递归定义,因此采用递归的方法去实现树的三种遍历不仅容易理解而且代码很简洁。而对于树的遍历若采用非递归的方法,就要采用栈去模拟实现。在三种遍历中,前序和中序遍历的非递归算法都很容易实现,非递归后序遍历实现起来相对来说要难一点前序遍历前序遍历按照“根结点原创 2016-04-15 17:04:33 · 24476 阅读 · 4 评论