(C++实现)输入两个链表,找出它们的第一个公共结点

方法一:先数出两条链表的长度,得到长度差d,先将长链表从头结点往后走d步,之后第二个链表从头开始,两个链表一起一步一步走,直到两个链表的节点第一次相等为止,此时指针位置即为所求。 ListNode* FindFirstCommonNode( ListNode* pHead1, ListNod...

2018-06-22 21:08:42

阅读数 549

评论数 0

C++实现动态规划解决在数组中找出指定和的数字

题目:给定一些数,要求找出相加等于100的所有数。有唯一解。例:输入:1,4,57,63,32输出:1,4,63,32思路:从前往后遍历,每个数字有两种对待方法——要或者不要。所以用到递归。先要,之后进行后续递归。如果没有得到结果,就不要这个数字,继续递归。都不行的话就是没有解。代码:#inclu...

2018-06-22 15:28:19

阅读数 603

评论数 0

检测“双重叠“字符串C++实现

用双指针进行遍历,当两个字符一样的时候再用循环判断是否是双重叠。#include <iostream> using namespace std; int main() { while(1){ string a; cin>&...

2018-06-01 22:02:50

阅读数 274

评论数 0

判断单链表中是否有环/两列表是否相交系列问题及C++实现

题目:1.给一个单链表,判断其中是否有环的存在;2.如果存在环,求出环上节点的个数;3.如果存在环,找出环的入口点;4.如果存在环,求出链表的长度;5.如果存在环,求出环上距离任意一个节点最远的点(对面节点);6.(扩展)如何判断两个无环链表是否相交;7.(扩展)如果相交,求出第一个相交的节点;解...

2018-05-30 17:06:44

阅读数 110

评论数 0

C++中时间与字符串之间的相互转换

1、常用的时间存储方式 1)time_t类型,这本质上是一个长整数,表示从1970-01-01 00:00:00到目前计时时间的秒数,如果需要更精确一点的,可以使用timeval精确到毫秒。 2)tm结构,这本质上是一个结构体,里面包含了各时间字段 struct tm...

2018-03-23 22:17:39

阅读数 901

评论数 0

最大子序列和问题O(N)

问题描述: 给定一整数序列A1, A2,... An (可能有负数),求A1~An的一个子序列Ai~Aj,使得Ai到Aj的和最大。 解决思想: 要想让时间复杂度为O(N),就只能用一个for(或while等的)循环。即遍历一遍数组。 1.我们可以从头遍历,把每一个元素相加,每加一次就与最大和进行...

2017-11-30 10:58:05

阅读数 155

评论数 0

C++中的cin函数和异常的来源(failbit)与处理(clear)

cin小知识点 可以将hex,oct,dec控制符与cin一起使用,来指定输入解释为16,8,10进制格式。 例如:下列语句可以将12或0x12解释为16进制的12或10进制的18,将ff(FF)解释为10进制的255. cin>>hex; cin>>机制: 跳过空白(空格...

2017-11-06 22:57:10

阅读数 514

评论数 0

C++中cout格式化输出的相关函数与控制符

cout<< <<为插入运算符,重载后可识别C++中的所有基本类型(unsigned signed char short int long float double以及组合) ostream& operator<<(type); 通过看上面的函数原型...

2017-11-06 00:22:52

阅读数 216

评论数 0

C++类型转换运算符

dynamic_cast用于(指向派生类对象的)基类指针转换成派生类指针。 如果转换失败,则返回0,即空指针。(通过判断转换是否成功,来决定是否用派生类里的函数(基类中可能没有那个函数))class A {}; class B : public A {}; class C : public B ...

2017-10-27 23:11:54

阅读数 121

评论数 0

欢迎使用CSDN-markdown编辑器

欢迎使用Markdown编辑器写博客本Markdown编辑器使用StackEdit修改而来,用它写博客,将会带来全新的体验哦: Markdown和扩展Markdown简洁的语法 代码块高亮 图片链接和图片上传 LaTex数学公式 UML序列图和流程图 离线写博客 导入导出Markdown文件 丰富...

2017-10-27 22:19:27

阅读数 63

评论数 0

C++中cin和cout中不会被注意的细节(字符串的处理)

cout.put(ch); 与cout cin cin使用空白(空格,制表符和换行符)来确定字符串的结束位置。 例子: #include using namespace std; int main() { char ch[20]; cin >&g...

2017-09-10 23:27:20

阅读数 424

评论数 0

C++基础——类与对象(下)

赋值运算符重载函数 类名& operater=(const 类名& 形参){ // 赋值操作 return *this; } 调用时机: 赋值 代码 Bill Bill::operator=(const Bill& b){ price = b.price; ...

2017-07-20 17:53:52

阅读数 105

评论数 0

C++基础——类与对象(上)

面向对象四大特征: 特征 说明 类比 抽象 抽出具体事物的普遍性的本质 分门别类:鸟类、哺乳类、鱼类 封装 把数据与处理(函数)包在一起 ...

2017-07-20 16:42:21

阅读数 114

评论数 0

从C到C++过渡知识

输出Hello World案例: 创建文件: vim HelloWorld。cpp源代码: #include using namespace std; int main(){ cout<<"Hello world"<<endl; }编译: ...

2017-07-13 22:16:23

阅读数 250

评论数 0

线程池编程

概念: 为什么————频繁创建和销毁线程浪费CPU资源。 是什么————一堆线程放在一个池子里统一管理。 流程: 1.初始化线程池、任务队列和工作线程。 2.向任务队列中添加任务。 3.将等候在条件变量(任务队列上的任务)上的一个线程唤醒并从该任务队列中取出第一个任务给该线程执行。 4.等待任务队...

2017-06-30 10:29:22

阅读数 148

评论数 0

socket 中 TCP 和 UDP 编码流程

TCP socket: Server: listenfd = socket() struct sockaddr_in //内部数据必须是网络序 sin_family sin_addr sin_port bind(listenfd) listen(listenfd,backl...

2017-06-28 23:17:10

阅读数 603

评论数 0

IO复用

概念:多路网络连接复用一个IO线程。如果用监控来自10根不同地方的水管(I/O端口)是否有水流到达(即是否可读),那么需要10个人(即10个线程或10处代码)来做这件事。如果利用某种技术(比如摄像头)把这10根水管的状态情况统一传达到某一点,那么就只需要1个人在那个点进行监控就行了。由于I/O多路...

2017-06-28 12:56:34

阅读数 380

评论数 0

socket编程——TCP

函数流程框图: 创建: int  socket(int  domain,int  type,int  protocol); domain——>协议域: AF_INET————IPV4。 AF_INET6————IPV6。 AF_LOCAL————Unix域。 type——>类型: ...

2017-06-15 15:00:14

阅读数 159

评论数 0

socket接口转换操作(网络序与主机序)

字节序转换操作: 头文件: 网络序转主机序: unit 16_t  ntohs(unit16_t  net_short); network  to  host  short。 把unsigned  short类型从网络序转换到主机序。 unit 32_t  ntohs(unit32_t  net...

2017-06-14 23:01:16

阅读数 271

评论数 0

线程间的读写锁

共享独占: 读取锁——共享 写入锁——独占 即:读锁可以加多个;有写锁时,读写锁都加不上;有读锁时,可以加读锁而不能加写锁。 静态分配读写锁: pthread_rwlock_t  rwlock = PTHREAD_RWLOCK_INITIALIZER; 动态分配读写锁: pthrea...

2017-06-08 11:46:40

阅读数 189

评论数 0

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