自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(39)
  • 收藏
  • 关注

原创 查找倒数第K个结点,要求之便利一遍

思路:快慢指针//查找倒数第K个结点,要求之便利一遍#includeusing namespace std;typedef int DataType;typedef struct SListNode{ DataType data; //数据 struct SListNode * next; //指向下一个

2016-04-30 17:28:54 327

原创 查找单链表的中间节点,要求只能遍历一次链表

思路:快慢指针//查找单链表的中间节点,要求只能遍历一次链表#includeusing namespace std;#includetypedef int DataType;typedef struct SListNode{ DataType data; //数据 struct S

2016-04-30 16:15:01 1447

原创 合并两个有序单链表,合并后依旧有序

思路:类似于摘结点法,利用尾指针(tail)把结点摘下来然后链在一起,然后返回头指针#define _CRT_SECURE_NO_WARNINGS 1//合并两个有序单链表,合并后依旧有序#includeusing namespace std;typedef int DataType;typedef struct SListNode{

2016-04-30 15:18:34 673

原创 单链表实现冒泡排序

思路:利用三个指针,一个指向尾结点(排序终止条件)的tail结点,一个prev指针,一个cur指针,进行比较,每次排完一遍后,将tail指针向前挪动一个单位,因为最大(或最小)的结点已经到最后了,已经不需要再进行排序了当然也可以进行优化,加一个标志位...#define _CRT_SECURE_NO_WARNINGS 1//单链表冒泡排序#includeusing

2016-04-30 10:38:35 663

原创 逆置/反转单链表

思路:摘结点法//逆置/反转单链表#includeusing namespace std;typedef int DataType;typedef struct SListNode{ DataType data; //数据 struct SListNode * next; //指向下一个结点的指针}SListNode;SListN

2016-04-29 21:50:54 273

原创 单链表实现约瑟夫环

语塞夫环问题:问题来历:据说著名犹太历史学家 Josephus有过以下的故事:在罗马人占领乔塔帕特后,39 个犹太人与Josephus及他的朋友躲到一个洞中,39个犹太人决定宁愿死也不要被敌人抓到,于是决定了一个自杀方式,41个人排成一个圆圈,由第1个人开始报数,每报数到第3人该人就必须自杀,然后再由下一个重新报数,直到所有人都自杀身亡为止。然而Josephus 和他的朋友并不想遵从。

2016-04-29 14:24:17 496

原创 在无头单链表的一个非头节点前插入一个节点

思路:先遍历找到要插入的结点,然后创造结点,插入#define _CRT_SECURE_NO_WARNINGS 1//在无头单链表的一个非头节点前插入一个节点#includeusing namespace std;#include#includeusing namespace std;typedef int DataType;typedef struct SListNod

2016-04-29 09:38:18 368

原创 删除一个无头单链表的非尾节点

#define _CRT_SECURE_NO_WARNINGS 1//删除一个无头单链表的非尾节点#include#includeusing namespace std;typedef int DataType;typedef struct SListNode{ DataType data; //数据 struct SListNode* next;

2016-04-28 21:23:28 430

原创 链表面试题--从尾到头打印单链表

#define_CRT_SECURE_NO_WARNINGS1//从尾到头打印单链表#includeusingnamespacestd;typedefintDataType;typedefstructSListNode{          DataTypedata;           //数据

2016-04-28 14:50:33 397

原创 比较顺序表和链表的优缺点

1.顺序表支持随机访问,链表不支持随机访问2.顺序表插入/删除数据效率很低,时间复杂度为O(N)(除尾插尾删),单链表插入/删除效率更高,时间复杂度为O(1)。3.顺序表的CPU高速缓存效率更高,单链表CPU高速缓存效率低。

2016-04-27 21:33:35 1581

原创 数据结构--优先级队列

优先级队列:优先级队列 是不同于先进先出队列的另一种队列。每次从队列中取出的是具有最高优先权的元素。(优先权可根据具体形势具体定义)优先级对列是堆的应用之一, 它的具体实现以堆为原型。仿函数://仿函数比较小templatestruct Less{ bool operator() (const T& l, const T& r) { return l < r;

2016-04-27 11:24:19 638

原创 数据结构-堆排序

#pragma once #include#includetemplateclass Heap{public: Heap() :_a(NULL) {} Heap(const T* a, int size) { _a.reserve(size); for (int i = 0; i < size; i++) { _a.push_back(a[i]);

2016-04-26 20:35:38 360

原创 数据结构-堆的应用-海量数据

#define _CRT_SECURE_NO_WARNINGS 1//海量数据#includeusing namespace std;#include#includeconst int N = 10000;const int K = 100;//创建数据void GetData(vector&Money,const int N){ srand(time(0)); //设

2016-04-26 20:33:46 214

原创 数据结构-堆

#pragma once #include#includetemplateclass Heap{public: Heap() :_a(NULL) {} Heap(const T* a,int size) { _a.reserve(size); for (int i = 0; i < size; i++) { _a.push_back(a[i]);

2016-04-25 10:20:54 190

原创 数据结构二叉树

#pragma once#include #include template struct BinaryTreeNode{ T _data; BinaryTreeNode * _left; BinaryTreeNode * _right; BinaryTreeNode( const T & x)

2016-04-24 13:13:49 238

原创 2.C++基础知识

引用作为参数:可以替代指针,提高效率。一般不要返回临时变量的引用int&  fun(){          int ret = 10;          return ret;}intmain(){          int m = fun();          cout           system("pause"

2016-04-22 20:44:10 270

原创 C++基础知识

内置类型:C++中这些基本的数据类型也称为内置类型,也就是语言内部已定义的基本类型。自定义类型:自己用struct/class/enum/union等定义的就是自定义类型。名字空间:namspace name解决全局命名冲突的问题;::是作用域解析符 cout是标准输出流对象  cin 是标准输入流对象  >>是输入操作符函数重载:在同一个作用域内,一组

2016-04-21 20:16:15 251

原创 [C语言常见面试题]查询一个字符串中第一个只出现一次的字符,要求时间复杂度为O(1)

//查询字符串中第一次只出现一次的字符,要求时间复杂度为O(1)#includeusing namespace std;char find_first_unique_char(char *str){ int data[256]; memset(data, 0, sizeof(data)); char *p = str; if (*p == '\0') return '\0';

2016-04-21 09:46:26 1012

原创 数据结构-广义表

广义表(Lists,又称列表)是一种非线性的数据结构,是线性表的一种推广。它被广泛的应用于人工智能等领域的表处理语言LISP语言中。在LISP语言中,广义表是一种最基本的数据结构,就连LISP 语言的程序也表示为一系列的广义表。因为表中有表,所以可以用递归进行解决广义表的问题。#pragma once #includeenum Type{ HEAD

2016-04-19 17:47:13 353

原创 《C++primer》读书笔记三

第十五章:面向对象编程三个基本概念:数据抽象,继承,动态绑定。在C++中,用累进性数据抽象,用类派生从一个类继承另一个类,派生类继承基类的成员。动态绑定使编译器能够在运行时决定是使用基类中定义的函数还是派生类中定义的函数。面向对象编程的关键思想是:多态性1.继承:派生类,基类。2.动态绑定:通过动态绑定,我们能够编写程序使用继承层次中任意类型的对象,无需关心对象的具体类型。

2016-04-19 17:10:25 247

原创 数据结构-稀疏矩阵

稀疏矩阵:矩阵中有效数据的个数远远小于无效数据的个数,则可以称之为稀疏矩阵如果还像以前那样将每个稀疏矩阵的数据都存储起来,则会造成内存的很大程度的浪费,所以应用特别的存储方式。稀疏矩阵的压缩存储:使用{row,col,value}三元组存储每一个有效数据,三元组按原矩阵中的位置,以行优先级先后顺序依次存放。矩阵的转置:将矩阵上行列互换,原来的A[i][j]就等于现在的A

2016-04-18 11:22:42 552

原创 数据结构_对称矩阵

#pragma once//对称矩阵templateclass SymmetricMatrix{public: SymmetricMatrix(T* a,size_t size) :_a(new T[size*(size+1)/2]) , _size(size*(size+1)/2) , _n(size) //方便以后用作出书打印 { size_t index =

2016-04-16 21:39:45 2477

原创 《C++primer》读书笔记二

13章.复制控制复制构造函数。赋值操作符和析构函数总称为复制控制。编译器自动实现这些操作,但类也可以定义自己的版本。需要定义自己的复制控制成员的:类具有指针成员。13.1复制构造函数(拷贝构造):只有单个形参,而且该形参是对本类类型对象的引用(常用const修饰),这样的构造函数称为复制构造函数。复制构造函数可用于:1.根据另一个同类型的对象显示或隐式初始化一个对象2.复制

2016-04-16 08:34:27 246

原创 栈的应用-后缀表达式

我看的是殷人昆版的《数据结构》,在栈的应用中,介绍了后缀表达式,下面由我为大家稍微说明下后缀表达式的定义.后缀表达式:也叫RPN或逆波兰表达式。它是中缀表达式的替代形式。参加运算的操作数总在操作符前面。例如:中缀表达式 A+B*(C-D)-E/F  对应的后缀表达式为:ABCD-*+EF/-详细的后缀表达式的过程如上图所示, 利用栈的特性生成后缀表达式。//后缀表达

2016-04-13 10:45:39 791

原创 数据结构-使用两个栈实现一个队列

1.使用两个栈实现一个队列思路一:假设一个s1是栈的s2是出栈的入队时,直接先把s1是入栈的,s2是出栈的。入队时,直接压到s1即可。出栈时,把s1的元素全部倒入s2中,然后弹出s2的栈顶元素。然后再把s2的元素全部倒入s1中。缺点:每次弹出一个数据后,都要把s2的数据再倒入s1中,来回挪动两次数据,比较麻烦。思路二:入队列:直接压入元素至s

2016-04-13 10:19:08 434

原创 《C++primer》读书笔记一

数据抽象和封装的两个优点:1.避免类内部出现无意的,可能破坏对象状态的用户级错误。2.随时间的推移,可以根据需求改变或缺陷报告来完善类实现。无需改变用户及代码。从const成员函数返回*this不能从const成员函数返回指向类对象的普通引用。const成员函数只能返回*this作为一个const引用。12.3类作用域在类作用域之外,成员只能通过对象或指针分

2016-04-13 09:47:41 342

原创 利用栈解决迷宫问题

#pragma once #include#include#define N 10struct Position{ int _row; //行 int _col; //列 Position(int row,int col) :_row(row) , _col(col) {}};templatebool SearchMazePath(int* a, int

2016-04-12 23:15:49 1202 1

原创 《高质量C++/C编程指南》读书笔记三

每个类只有一个析构函数和一个赋值函数。可有多个构造函数。把对象的初始化放在构造函数中,把清除工作放在析构函数中。然后编译器会自动进行初始化和清除工作。构造函数和析构函数没有返回值类型。9.2构造函数的初始化列表位于函数参数表之后,{ }之前,类的const常量只能在初始化列表中初始化,9.3构造函数的次序构造从类的最根层调用,首先调用基类的构造函数,然后调用成员对象的构造函

2016-04-10 11:01:50 305

原创 C++实现队列

队列:队列具有先进先出的特性。队列用链表实现较好,因为数据的插入和删除一个在尾上操作,一个在头上操作。用链表较方便。#pragma oncetemplatestruct Node{ T _data; Node* _next; Node(const T& x) :_data(x) ,_next(NULL) {}};templateclas

2016-04-10 09:50:37 372

原创 PAT乙级1010-月饼

题目描述月饼是中国人在中秋佳节时吃的一种传统食品,不同地区有许多不同风味的月饼。现给定所有种类月饼的库存量、总售价、以及市场的最大需求量,请你计算可以获得的最大收益是多少。注意:销售时允许取出一部分库存。样例给出的情形是这样的:假如我们有3种月饼,其库存量分别为18、15、10万吨,总售价分别为75、72、45亿元。如果市场的最大需求量只有20万吨,那么我们最大收益策略应该是...

2016-04-10 09:43:42 323

原创 PAT乙级1009-数字黑洞

题目:给定任一个各位数字不完全相同的4位正整数,如果我们先把4个数字按非递增排序,再按非递减排序,然后用第1个数字减第2个数字,将得到一个新的数字。一直重复这样做,我们很快会停在有“数字黑洞”之称的6174,这个神奇的数字也叫Kaprekar常数。 例如,我们从6767开始,将得到7766 - 6677 = 1089 9810 - 0189 = 9621 ...

2016-04-08 15:33:13 531

原创 C++实现栈

1.队列#pragma oncetemplatestruct Node{ T _data; Node* _next; Node(const T& x) :_data(x) ,_next(NULL) {}};templateclass Queue{public: Queue() :_head(NULL) ,_tail(NULL) ,_size(0)

2016-04-08 00:55:38 397

原创 《高质量C++/C编程指南》读书笔记二

相比较C语言,C++增加了重载,内联,const和 virtual 四种新机制。其中,重载和内联既可用于全局函数,也可用于类的成员函数。 const 和virtual机制仅用于类的成员函数。函数重载:编译器根据参数为每个重载函数产生不同的内部标识符(不同编译器产生的内部标识符不同)。C++调用C函数 --->用extern "C"重载与覆盖:成员函数被重载的

2016-04-08 00:08:33 324

原创 《高质量C++/C编程指南》读书笔记一

const和define的比较在C++中const 和#define 都能够定义常量。但是前者与后者相比,有一些优点。1.const定义的常量有数据类型,而#define定义的常量没有数据类型。编译器会对前者进行安全类型检查,对后者编译时只是做简单的字符替换替换。没有安全检查,而且在替换的时候经常出现意想不到的错误,唯一能做的是不要吝啬()。2.有些集成化调试工具会对const常量

2016-04-06 12:58:19 360

转载 #pragma和#ifndef的区别

为了避免同一个文件被include多次,C/C++中有两种方式,一种是#ifndef方式,一种是#pragma once方式。在能够支持这两种方式的编译器上,二者并没有太大的区别,但是两者仍然还是有一些细微的区别。    方式一:    #ifndef __SOMEFILE_H__    #define __SOMEFILE_H__    ... ... // 声明、定义语

2016-04-05 16:40:07 232

原创 PAT乙级1008-剪刀石头布

大家应该都会玩“锤子剪刀布”的游戏:现给出两人的交锋记录,请统计双方的胜、平、负次数,并且给出双方分别出什么手势的胜算最大。 输入描述:输入第1行给出正整数N(&lt;=105),即双方交锋的次数。随后N行,每行给出一次交锋的信息,即甲、乙双方同时给出的的手势。C代表“锤子”、J代表“剪刀”、B代表“布”,第1个字母代表甲方,第2个代表乙方,中间有1个空格。 输...

2016-04-05 13:09:25 558

原创 PAT乙级1007-A除以B

本题要求计算A/B,其中A是不超过1000位的正整数,B是1位正整数。你需要输出商数Q和余数R,使得A = B * Q + R成立。 输入描述:输入在1行中依次给出A和B,中间以1空格分隔。 输出描述:在1行中依次输出Q和R,中间以1空格分隔。 输入例子:123456789050987654321 7 输出例子:17636684150...

2016-04-04 19:23:46 326

原创 PAT乙级1006-部分A+B

正整数A的“DA(为1位整数)部分”定义为由A中所有DA组成的新整数PA。例如:给定A = 3862767,DA = 6,则A的“6部分”PA是66,因为A中有2个6。现给定A、DA、B、DB,请编写程序计算PA + PB。 输入描述:输入在一行中依次给出A、DA、B、DB,中间以空格分隔,其中0 &lt; A, B &lt; 1010。 输出描述:在一行中输...

2016-04-03 14:29:43 240

原创 PAT乙级1005-德才论

宋代史学家司马光在《资治通鉴》中有一段著名的“德才论”:“是故才德全尽谓之圣人,才德兼亡谓之愚人,德胜才谓之君子,才胜德谓之小人。凡取人之术,苟不得圣人,君子而与之,与其得小人,不若得愚人。”现给出一批考生的德才分数,请根据司马光的理论给出录取排名。 输入描述:输入第1行给出3个正整数,分别为:N(&lt;=105),即考生总数;L(&gt;=60),为录取最低分数线...

2016-04-03 14:20:49 431

空空如也

空空如也

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

TA关注的人

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