C++语言
文章平均质量分 71
dancingrain
上天给了我梦,我为她寻天地
展开
-
温习C/C++笔记(2)——指针和引用的区别
首先看一段代码以及运行结果,我将结合该段代码讲解指针和引用的两点区别://// main.cpp// testC++02//// Created by fei dou on 12-7-29.// Copyright (c) 2012年 vrlab. All rights reserved.//#include #include using namespace s原创 2012-07-29 14:03:26 · 892 阅读 · 0 评论 -
判断链表中是否有环 ----- 有关单链表中环的问题
首先,关于单链表中的环,一般涉及到一下问题:1.给一个单链表,判断其中是否有环的存在;2.如果存在环,找出环的入口点;3.如果存在环,求出环上节点的个数;4.如果存在环,求出链表的长度;5.如果存在环,求出环上距离任意一个节点最远的点(对面节点);6.(扩展)如何判断两个无环链表是否相交;7.(扩展)如果相交,求出第一个相交的节点;原创 2013-08-30 14:46:06 · 7736 阅读 · 4 评论 -
求用一维数组表示的矩阵的乘积
版权所有,转载请注明出处!这里并不是着重也算法效率的提升,而是以一种更能够让人们读懂的方式进行书写程序,这里我写了三个程序,分别使用三种编程方式进行书写,希望读者能够找到更加适合自己的方式。1.直接按照一维数组的习惯操作:#include #define N 3using namespace std;int main (int argc, const char原创 2012-08-07 11:02:50 · 2573 阅读 · 0 评论 -
大整数加减乘除及取模运算 C++实现
最近事情实在是太多了,一直没有时间写博客,昨天刚刚忙完硕士开题,虽然还是有很多的事情要做,但实在是不想弄了。想起一个月之前就已经写完的一个大整数加减乘除法的程序,今天把它贴出来和大家分享,目前我只是做了简单的测试,可能程序中还存在不好的bug,也希望大家能一块帮着指出其中的错误!!希望和大家一块学习共勉 .....首先是实现大整数的头文件:BitInt.h#ifndef DO原创 2013-12-10 21:21:09 · 13117 阅读 · 10 评论 -
随机读取文件中一行数据
随机读取文件中一行数据问题描述:对于一个事先不知道有多少行的文件,设计一种算法,能够快速地随机读取文件中的一行数据。思路1:先统计文件又多少行数据,假设共有N行。然后根据k = rand()%N得到选择的行,再从文件头开始,逐行读取,一直到第k行,作为随机读取的一行数据。这种思路简单直白,但是效率不高。思路2:只读取一遍文件,就能以相同的概率选出文件中的一行数据。具体做法是使用一个变量原创 2014-01-05 17:13:52 · 3968 阅读 · 0 评论 -
C++中的回调函数——指向类成员的指针
C++中的回调函数 ——指向类成员的指针在C中我们能够很容易地实现一个指向函数的指针,因此能够方便地实现函数的回调机制。但是在C++中很多人认为类的成员函数不能作为回调函数,因此很多C程序不能移植到C++上来。其实不是这样的,在C++中我们同样可以获取类的成员函数的指针,也能方便地实现函数回调机制。下面先数一下C/C++中普通函数作为回调函数的情况,然后再说C++ 中类成员函原创 2014-03-12 14:44:50 · 7859 阅读 · 3 评论 -
用邻接链表数据结构存储图 并实现Dijkstra算法
对于还不明白Dijkstra算法的可以到网上随便搜一下,有大量的资料,同时也可以参看我的另一篇博客:http://blog.csdn.net/doufei_ccst/article/details/7841311,在这篇博客中是以邻接矩阵来实现Dijkstra算法的。用邻接链表数据结构存储的图的Dijstra算法的实现代码可以参看我的代码分享:https://github.com/craz原创 2013-10-17 23:51:33 · 6010 阅读 · 0 评论 -
逆波兰式计算
本题目来源于LeetCode,计算逆波兰式的值,具体如下:Evaluate Reverse Polish Notation Evaluate the value of an arithmetic expression in Reverse Polish Notation.Valid operators are +, -, *, /. Each o原创 2014-03-26 11:18:39 · 1363 阅读 · 0 评论 -
双向冒泡排序
双向冒泡排序原创 2014-04-19 11:00:12 · 960 阅读 · 0 评论 -
网易有道笔试题(2014届,2013.10北邮站)
从网上看到网易有道2014届校园招聘的笔试题目,简单的做了一下编程和算法部分,都是一些平常遇到的题目,留一个笔记。总共有两道编程题目,要求写出可以运行的C/C++代码或者Java代码,第一个编程题如下:(不是太清楚,但勉强能看)对于这道题,应该是考察对于字符串的处理能力,应该是比较基础的题目。从题目的描述我们可以将要转换的字符串组合分成两大类1,普通的字符串,不进行原创 2013-10-16 14:45:01 · 6489 阅读 · 5 评论 -
单链表插入排序算法
如果数据存储在一段连续的内存上,比如数组中,插入排序算法的实现相信大家都yij原创 2014-04-06 16:59:36 · 2230 阅读 · 0 评论 -
LRU Cache 实现
LRU Cashe实现LeetCode上有着样一道题目:Design and implement a data structure for Least Recently Used (LRU) cache. It should support the following operations: get and set.get(key) - Get the value (wil原创 2014-04-07 11:58:54 · 9942 阅读 · 0 评论 -
单链表排序(快速排序、归并排序)
本题目来源于LeetCode,具体如下:Sort a linked list in O(n log n) time using constant space complexity.题目要求复杂度O(nlogn),因此我们很自然考虑使用快速排序或者归并排序,但是后来经过实践证明,使用快速排序总是AC超时,归并排序则可以正确AC。分析一下原因,个人认为是与测试数据有关,因为快速排序不能原创 2014-03-26 22:53:47 · 18559 阅读 · 4 评论 -
二叉树遍历之非递归实现
二叉树遍历之非递归实现 二叉树遍历算法的重要性大家都知道,是很多算法的基础,它的递归实现非常简单,相信学过数据结构的同学都应该能够轻松写出来。如果需要写出二叉树的前序遍历、中序遍历以及后续遍历的非递归实现,可能还是需要费点时间。下面给出我的实现方式。前序遍历: 二叉树的前序非递归实现可以按照这样的思路:毫无疑问,我们需要一个栈来作为辅助空间,首先将根节点入原创 2014-04-07 17:00:05 · 1156 阅读 · 0 评论 -
翻转字符串中的单词
本题目来自LeetCode,具体如下:Given an input string, reverse the string word by word.For example,Given s = "the sky is blue",return "blue is sky the".click to show clarification.Clarification原创 2014-03-26 10:06:08 · 1062 阅读 · 0 评论 -
最多共线点的数目
本题目来自LeetCode,具体内容如下:Max Points on a Line Given n points on a 2D plane, find the maximum number of points that lie on the same straight line.题目叙述很简单,就是给定2D平面上的N个点,从这些点中原创 2014-03-26 15:13:39 · 5615 阅读 · 1 评论 -
重新排列链表
LeetCode : Reorder List原创 2014-04-07 19:49:53 · 861 阅读 · 0 评论 -
POJ 2965
The Pilots Brothers' refrigeratorTime Limit: 1000MS Memory Limit: 65536KTotal Submissions: 16008 Accepted: 6035 Special JudgeDescriptionThe game “The Pilo原创 2013-09-28 22:03:12 · 665 阅读 · 0 评论 -
温习C/C++笔记——浅谈琐碎知识点(1)
最近正在准备毕业答辩,基本材料已经准备停当,现在有些闲暇时间。突然从自己书堆中翻出了一本讲解C/C++语言的书,想来闲着也没有什么事,不如温习以下以前学过的知识。所以,这里就简单写一点自己对C/C++中琐碎知识点的理解,有什么不准确的地方还望读者指正,大家一起探讨!1.C中的指针和C++中引用的比较C++中引入了引用(reference)的概念,引用并不是C++的新发明,它也存在于原创 2012-05-21 15:30:01 · 507 阅读 · 0 评论 -
温习C/C++笔记(3)——Vector和List的区别
1.Vector容器vector 是一种顺序容器,它的元素被存储在一段连续空间中。vector是作为一种动态数组实现的,和普通的数组一样,它的元素被存储在一段连续的空间中,因此不仅可以通过迭代器访问元素,而且可以通过某个元素的指针加上一个偏移量进行访问。vector的大小是自己维护的,用户完全不需要关心其大小,它会根据需要对数组的大小进行扩充。Vector的有点主要有:1.原创 2012-08-06 21:18:22 · 622 阅读 · 0 评论 -
STL map 和 hash_map
什么需要hash_map 用过map吧?map提供一个很常用的功能,那就是提供key-value的存储和查找功能。例如,我要记录一个人名和相应的存储,而且随时增加,要快速查找和修改:岳不群-华山派掌门人,人称君子剑张三丰-武当掌门人,太极拳创始人东方不败-第一高手,葵花宝典...这些信息如果保存下来并不复杂,但是找起来比较麻烦。例如我要找"张三丰"的信息,最傻的方法就转载 2012-08-13 21:15:18 · 552 阅读 · 0 评论 -
【C++】#define vs const 、enum & inline
参考书籍:《Effective C++ 》《C++ Primer》《C++ 编程思想》上下册算来已经好久没有写博客了,周末抽点时间记录下最近学习的一个小问题吧。一直在使用C++写个小实验,以前没有写过特别大的工程,也很少会考虑到使用和不使用#define这个宏的好处和有点,最多也就是知道它是在预处理时期“盲目替换”代码的,因此不会牵涉到函数调用也就更不会有函数调用带原创 2013-03-31 17:27:35 · 908 阅读 · 0 评论 -
从string中解析出单词
写了两个函数,分别借助不同的函数实现,代码的逻辑很简单:#include #include #include //strtok#include#include using namespace std;//实现将一个字符串按照分隔符划分成单词/**思路:*每一个单词的开头也就是第一个非空格的位置,用start = find_first_not_of(' ', end)来得原创 2013-06-27 09:11:18 · 1234 阅读 · 0 评论 -
字符串匹配算法KMP
KMP算法的原理,这里我不写,建议参考:http://www.ruanyifeng.com/blog/2013/05/Knuth%E2%80%93Morris%E2%80%93Pratt_algorithm.html这篇博客写的非常好,以本人的能力只能写出更烂的解释 .....所以就不再多此一举了,下面仅仅给出两端代码,分别用C++和Python写的(都已经编译通过),希望能对大家有所帮助原创 2013-07-03 15:22:44 · 706 阅读 · 0 评论 -
do ... while(0)的好处
转载自:http://www.cppblog.com/xyjzsh/archive/2010/11/24/134516.html个人觉得写得很好,转载作为备忘,同时也分享给大家!在C++中,有三种类型的循环语句:for, while, 和do...while, 但是在一般应用中作循环时,我们可能用for和while要多一些,do...while相对不受重视。 但是,最近在读我们项转载 2013-08-26 09:19:44 · 610 阅读 · 0 评论 -
删除字符串前后的空格
下面是本人写的一个小函数,用来删除string中前面和后面的空格,逻辑很简单,不做多的解释 ....#include #include using namespace std;string& removeSpace(string& srcStr){ srcStr.erase(srcStr.begin(), srcStr.begin() + srcStr.find_first_原创 2013-06-25 16:54:55 · 1102 阅读 · 0 评论 -
杭电1106
排序Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 28373 Accepted Submission(s): 7854Problem Description输入一行数字,如果我们把这行数字中的‘5’都原创 2013-09-25 23:04:31 · 834 阅读 · 0 评论 -
杭电1108
最小公倍数Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 27414 Accepted Submission(s): 15184Problem Description给定两个正整数,计算这两个数的最小公原创 2013-09-25 23:40:05 · 920 阅读 · 0 评论 -
杭电1032
The 3n + 1 problemTime Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 18197 Accepted Submission(s): 6721Problem DescriptionProble原创 2013-09-26 22:56:48 · 1038 阅读 · 0 评论 -
杭电1040
As Easy As A+BTime Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 30295 Accepted Submission(s): 12993Problem DescriptionThese day原创 2013-09-27 13:08:26 · 1071 阅读 · 0 评论 -
杭电1048
The Hardest Problem EverTime Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 13447 Accepted Submission(s): 6123Problem Description原创 2013-09-27 14:53:40 · 862 阅读 · 0 评论 -
杭电1061
Rightmost DigitTime Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 26061 Accepted Submission(s): 10018Problem DescriptionGiven a原创 2013-09-28 11:38:08 · 1139 阅读 · 0 评论 -
POJ 1753
Flip GameTime Limit: 1000MS Memory Limit: 65536KTotal Submissions: 26203 Accepted: 11308DescriptionFlip game is played on a rectangular 4x4 field with two-sided原创 2013-09-28 17:07:37 · 695 阅读 · 0 评论 -
杭电1058
Humble NumbersTime Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 13689 Accepted Submission(s): 5956Problem DescriptionA number w原创 2013-09-27 21:42:20 · 659 阅读 · 0 评论 -
Linked List Cycle
链表中是否存在环Linked List Cycle II Total Accepted: 10308 Total Submissions: 33751My SubmissionsGiven a linked list, return the node where the cycle begins. If there is no cycle, re原创 2014-04-10 17:18:56 · 681 阅读 · 0 评论