自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

CCPP Blog

结构、算法、c、c++

  • 博客(13)
  • 资源 (39)
  • 收藏
  • 关注

原创 插入排序:直接插入、交换插入、折半插入

插入排序:把一个数插入到一个有序的序列中,并要求插入后此数据序列仍然有序。这种排序思想就是插入排序。 那么对于一个原始无序的序列,哪里找有序的部分呢?这个很简单,可以把序列分为两个部分,第一个元素是第一部分,其余元素是第二部分。第一个部分只有一个元素,当然是有序的!对于如何把其余元素插入到第一部分中去,按插入策略,可分为如下几种插入方法:

2014-05-28 21:13:38 17070 2

原创 栈的应用:解析算术表达式

类似于 1*2-3+4-(5-6)-2/4 的式子,我们称为算术表达式。下面我们利用栈这种数据结构来解析它,即用栈来辅助计算算术表达式。首先我们得明确计算规则:先左后右:从左算到右先乘除,后加减先括号内,后括号外原理:

2014-05-27 14:06:54 6364 3

原创 链表常见操作:环、倒数第k个、是否相交

链表常见操作:判断是否有环链表中很常见的一问题是,是否有环?如下图:怎么办呢?正常链表的尾节点的链域是NULL,有环就不存在NULL了!对了,用一指针轮询,不断地 p=p->next; 若是看到了p为NULL,则表明无环!否则,就是有环。这个想法挺好,但是有环,会进入死循环的。有人说,那就设置一时间点,过了时间还没结束,就是有环。我想说,那万一链表真的很长呢,时间点设置多少才够了?……办法是有的:使用两指针,一快一慢,都从头开始轮询,若有环,则慢的肯定可以被快的反超,因为此时大家都像是在围绕着环形跑

2014-05-24 17:27:37 2100 1

原创 栈的实现:顺序栈

栈(stack)是一种很常见的线性结构。它是只允许在一端进行插入和删除操作的线性表,这一端我们称为栈顶。栈的特点常被称为:先进后出(filo-first int last out),或者是后进先出(lifo-last in first out)。这个描述从它的操作特点可以看出,只许在一端进行插入,那么显然,先进的肯定后出。栈的应用,比如系统应用栈来实现递归,图的深度遍历使用了栈,递归要用到栈……。说到它的实现就有两种形式:顺序栈、链栈。其中以顺序栈最为常见。栈的常见操作:

2014-05-24 12:17:24 6864 1

原创 链表常见操作:有序链表合并去重

两个升序链表合并,并要求去掉重复元素 。分析:如何使链表本身是有序的,这个我们可以在加入元素的过程中做到合并,并去掉重复元素,这个是难点思路:主要思想类似于直接插入排序和归并排序。指针p指向list1,指针q指向list2,由于list1已经有序,我们只需要把q指向的节点插入一个原本有序的表,这不就是直接插入排序算法吗?当然,得把p移动到合适位置。再由于list2也已经有序,因此插入过程中p不需回溯,只需不断地往后移动,这不就是归并排序吗?如果q指向节点的值域和p指向节点的值域相同,则应该丢掉此

2014-05-20 09:43:38 6203 1

原创 链表常见操作:逆置(反转)

链表中的一个很常见的操作是:链表的逆置,也叫链表的反转。如:1->3->5->7->9 反转后是 9->7->5->3->1

2014-05-20 00:17:25 12230 9

原创 单链表,单循环链表,约瑟夫问题

线性表 线性表中的线性一词说的是一种逻辑结构,它表示除了首尾节点外,其它节点都只有一个前驱和一个后继,这是一对一的关系。要想实现线性表得考虑它的物理结构,即选用何种存储结构。线性表主要有两种存储结构:1.顺序存储这即是我们常用的数组,很多语言都内置了这种数据类型,可见它即基础又常用。它的特点是:按位置访问很容易,它是O(1)的;插入和删除相对比较麻烦,因为这普遍要移动元素,它是O(n)的;按内容查找对于无序的表是O(n)的。2.链式存储,

2014-05-12 13:49:02 4677 2

原创 数据结构与算法目录

数据结构与算法系列先看这里,有助于你更好地获取内容。首先明白一个问题:为什么要研究数据结构? 这是因为所有的程序本质上是对数据进行处理,如何高效的处理数据,这依赖于数据本身的结构(如类型(整型、浮点型等)、维数、是否为复杂类型(结构体类型、类类型)等)以及数据之间的逻辑关系(线性、非线性等)。我们所学的数据结构这门课程就是研究这些内容的,只有弄清楚了这些,我们才可以用高效的算法与之结合,产生高效率的程序。掌握好数据结构的内容也是一个程序员的基本功,特别对于c/c++程序员。

2014-05-12 13:48:23 15382 2

原创 挑战面试编程:单词翻转、高斯公式、魔方矩阵、黑白球、3n+1

题一: 把一字符串如"I love you."变为"you. love I"。题二: 高斯在上小学时发明了等差数列求和公式:1+2+..+100=5050。现在问题在于给你一个正整数n,问你他可以表示为多少种连续正整数之和?(自身也算)。(取自csdn高校俱乐部线上编程挑战赛)题三:打印魔方矩阵:如三阶的:8 1 63 5 74 9 2规律是:题四 黑白球一个袋子里有两种颜色的球,黑色和白色,你每次从中取出两个球,如果是同色的,则在袋子里放一个白球,否则放回一个

2014-05-08 17:26:35 2161 1

原创 挑战面试编程:最大连续子序列和

挑战面试编程:最大连续子序列和问题对于形如:int arr[] = { 1, -5, 3, 8, -9, 6 };的数组,求出它的最大连续子序列和。若数组中全部元素都是正数,则最大连续子序列和即是整个数组。若数组中全部元素都是负数,则最大连续子序列和即是空序列,最大和就是0。方法一用sum[i,j]表示arr[i]到arr[j]的和,则显然可以通过枚举(i<=j),求出所有的和。

2014-05-08 00:29:25 1781

原创 挑战面试编程:字符串转换为整数

挑战面试编程:字符串转换为整数将类似这样的字符串,"abc123abc"转换为整数,即为123。若是"abc",则直接输出0。本题看似很简单,但有些地方还得注意:字符串中可能带有符号,如'+' '-',这得考虑。该整数位可能很长,所以必须能够处理溢出的情况:对于过大的,输出MAX_INT;对于过小的,输出MIN_INT。代码

2014-05-07 22:48:29 1479

原创 挑战面试编程:计算整数二进制位中1的个数

题目:在计算机中,整数是以2的补码的形式给出的。 给出整数A和B,假设计算机是32位机,求从A到B之间的所有二进制数中,一共用了多少个1。 输入格式: 多组数据,每组数据一行,由两个整数A,B, -2147483648<=A<=B<=2147483647 输出格式: 每组输出一行,从A到B使用的1的个数。(本题取自csdn高校俱乐部线上编程挑战赛)分析: 我们知道任何数据在计算机中都是用二进制表示的,即用一堆0或1表示各种类型的数据。当然还要考虑它的字节数,例如在32位机中。sizeof

2014-05-07 21:22:20 2286 4

原创 约瑟夫问题的数组解法

约瑟夫问题的数组、动态链、静态链解法。

2014-05-05 17:55:59 4941 5

前缀、中缀、后缀表达式

利用STL中stack,解析前、后缀表达式,并将中缀表达式转换到相应的前、后缀表达式。

2015-06-23

去除停用词.c

使用C语言,根据停用词表,对指定文件的内容扫描,从而删除文件中出现的停用词。

2015-06-22

大整数的加、减、乘、除

使用C++语言,实现大整数的加、减、乘、除。使用到了标准库的string类型。关键是逻辑上的处理。

2015-06-10

十六进制数转化为八进制数

把位数在10W以内的十六进制数成功转化为八进制数,思想是:先转化为2进制数,再把2进制数转换为8进制数。

2015-03-17

函数模板模拟printf

利用C++中的函数模板简易模拟printf()函数。设计的知识点包括函数模板、可变参数等。

2015-02-17

外排序-多路归并

外排序问题的出现,主要是因为内存不够。当需要排序的数据量过多,以至于无法一次性把所有的数据都放入内存,这导致了外排序问题的出现。解决大数据量排序的方法是:先分块排序,后进行块合并。

2014-08-23

最小生成树:Prim算法

使用Prim算法求解图的最小生成树,其中图用邻接矩阵存储。

2014-08-05

图:FLoyd算法

使用Floyd算法,求解点对之间的最短距离。图结构使用邻接矩阵存储。

2014-08-04

求解单源最短路径:Dijkstara算法

使用Dijkstra算法求解单源最短路径问题,不仅求出最短路径,同时给出最短路径序列。

2014-08-03

有向图的拓扑排序

对于有向图进行拓扑排序,图使用邻接矩阵的存储结构。

2014-08-03

图的遍历:深度优先、广度优先

在邻接矩阵的存储结构下,实现图的深度优先遍历和广度优先遍历。

2014-08-02

图的实现:邻接表

使用邻接表实现图结构,无向的、有向的、无权的和有权的都可支持。

2014-08-01

图的实现:邻接矩阵

使用邻接矩阵实现图结构,无论是有向图、无向图、带权图还是无权图,都可以指定。

2014-07-31

模式匹配:KMP算法

使用KMP算法实现模式匹配,包括next数组的求解,kmp算法的实现。关键代码有详细注释。

2014-07-23

哈夫曼树&哈弗曼编码

哈夫曼树 给定n个权值作为n个叶子结点,构造一棵二叉树,若带权路径长度达到最小,称这样的二叉树为最优二叉树,也称为哈夫曼树(Huffman tree)。用c++实现构造哈夫曼树、哈夫曼编码。

2014-07-12

桶排序(二维数组)

桶排序(Bucket Sort)是对基数排序的一个变种。在排序过程中没有用到计数数组,而是用不同的桶来暂时存储关键字。使用二维数组模拟桶。

2014-07-11

桶排序(静态队列)

桶排序(Bucket Sort)是对基数排序的一个变种。在排序过程中没有用到计数数组,而是用不同的桶来暂时存储关键字。使用静态队列模拟桶,实现桶排序。

2014-07-11

二叉堆:最大堆

使用c++实现最大堆。提供常见操作,如插入、删除、堆化数组、堆排序、上下调整、向下调整。

2014-07-08

二叉堆:最小堆

使用c++实现最小堆。提供常见操作,如堆化数组,插入,删除,堆排序,遍历堆。

2014-07-08

二叉搜索树的c++实现

使用二叉链表和c++来实现二叉搜索树,提供插入、删除、遍历、求最小节点、最大最节点等操作。

2014-07-05

二叉树的二叉链表实现

使用二叉链表实现二叉树,提供常见的操作:各种遍历,求树高,节点数。

2014-07-03

一元多项式的加法、减法、乘法

使用链表来实现单元多项式的加法、减法、乘法。其中,加法是其它运算的基础,减法:poly1-poly2=poly1+(-poly2),乘法:poly1*poly2,可用poly1乘以poly2的每一项,相加其乘积结果。

2014-06-17

队列的应用:优先级队列

使用顺序存储实现优先级队列,展示优先级队列和普通队列的区别之处。

2014-06-12

队列的实现:链式队列

用链表的形式实现队列,提供常见操作,出队、入队……

2014-06-09

队列的实现:顺序队列

使用顺序存储的方式实现队列,提供队列的常见操作。

2014-06-07

栈的实现:链式栈

使用链式结构来实现栈,提供常见的栈操作,push() pop() top() empty() size()

2014-06-05

栈结构解析算术表达式

使用栈结构解析算术表达式,加、减、乘、除、求余,并支持多位数运算

2014-05-28

用栈解析算术表达式

用栈解析算术表达式,并且做到了多位数运算,运算包括加、减、乘、除、求余

2014-05-28

栈的实现顺序栈

栈的顺序栈形式,简易的实现,push() pop() top() size() empty()

2014-05-24

约瑟夫问题的静态链解法

这是约瑟夫问题的静态链解法,代码量少,易理解,是一种很好的思路

2014-05-24

单向循环链表解决约瑟夫问题

用单向循环链表解决约瑟夫问题。使用c++语言,结构体,链表的操作。

2014-05-12

线性表-单链表

单链表的类定义和类实现,常见操作,插入、删除。

2014-05-12

查找数组中第k大的数

给定一数组,查找数组中第k大的数。代码中借助快速排序中的partition方法来实现。

2016-01-08

字符串转化为整数

把一个字符串转化为相应的整数。特别注意符号与溢出的问题。

2016-01-06

单双精度浮点数解析.c

对于计算机中常见的浮点数存储格式进行分析,编程提取float和double中的阶码好尾码。

2015-12-16

printf的类模板实现.cpp

使用C++的类模板机制来简单实现库函数printf。

2015-12-16

LeetCode--Linked List.cpp

文件中包含了LeetCode中Tag为LinkedList的题目参考代码。

2015-12-14

LeetCode-Linked List.cpp

这是LeetCode中Linked List所有题目的参考代码。(截止到目前为止:2015年12月14日)。

2015-12-14

在同一段内存上存储不同类型的数据

使用malloc动态分配一段内存,在该段内存的首地址处的四字节下记录不同数据块的个数,使用合适的方式存入数据,并相应读取。

2015-06-22

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除