我太菜了

喜欢写Hello World的未来程序员.

二叉树的下一个结点

你快乐吗?

魑魅搏人应见惯 总输他 覆雨翻云手 C++,二叉树的中序遍历。 中序的下一个结点只有三种情况: 右子树的最左结点 父节点中左儿子也是当前节点父节点的结点(就是这么绕。。。) 空结点 根据如上结论,就能写出代码了: /* struct TreeLinkNode { int val; struct TreeLinkNode *left...

删除链表中重复的结点

你快乐吗?

玉颜不及寒鸦色 犹带昭阳日影来 C++,链表题。 对,链表题往往都不难,就是麻烦。。。 其实就是找到连续重复子序列的左右端点,然后删就行了。当然OJ没法判断你删没删,实际上你只要移动指针改变指向就好了哈哈哈。 有个屡试不爽的技巧,就是在原链表前加个头。 详细见代码: /* struct ListNode { int val; struct ListN...

C/C++跨文件共享全局变量

extern关键字

满堂唯有烛花红 歌且从容 杯且从容 最近有这么个需求,在utils.h中定义一个跨文件全局变量tmp,然后要在其他几个源文件a.cpp,b.cpp,c.cpp中用到这个tmp,包括修改和查看。 一开始想到的就是直接用static修饰不就好了吗? 结果发现了,static修饰的全局变量不能跨文件共享,新知识。 当然了,普通的全局变量也是不可以的,不然会直接拷贝一份,...

C/C++使用信号实现超时功能

socket超时

若教眼底无离恨 不信人间有白头 Python可以通过装饰器实现函数的超时,C/C++就得想点别的办法了,可以借助一个操作系统的信号机制。 网上资料很多,这里我直接放代码,一看就懂,其实就调用了两个系统调用。 #include <signal.h> #include <cstdio> #include <unistd.h> void h...

C/C++中分割字符串

使用sscanf库函数分割字符串

我最怜君中宵舞 道“男儿到死心如铁” 看试手,补天裂 解析HTTP响应报文的时候,响应头中除了第一行,其他行都是key: value结构,怎么高效方便地解析成map类型的数据呢? 我首先想到的就是sscanf函数,于是写了如下程序: #include <cstdio> int main() { char *str = "sss: sssss";...

链表中环的入口结点

你快乐吗?

风乍起 吹皱一池春水 C++,链表快慢指针,leetcode原题。 我们定义快慢两个指针,从第一个结点触发,快指针一次走两个结点,慢指针一次走一个结点,于是会存在如下情况: 如果有环,则两个指针一定会再次相遇,且快指针经过的结点数是慢指针的两倍数; 如果无环,快指针先碰到空指针。 所以我们假设l_slow为慢指针经过的结点数,l_quick是快指针经过的结点...

字符流中第一个不重复的字符

你快乐吗?

荷花十里 清风鉴水 明月天衣 C++,hash,很简单的一道题,就是要看懂题。 题意“每插入一个字符”,都要输出当前字符串的“第一个不重复的字符”。 class Solution { private: int hash[128]; std::string str_stream; public: //Insert one char fro...

C++头文件中函数被多次定义

头文件多次被include

疏影横斜水清浅 暗香浮动月黄昏 重定义问题: 之前由碰到过类似的问题,然后可以通过条件编译来解决: #ifndef XXXX #define XXXX ... ... #endif 大概就是头文件被多个源文件包含以后,里面的函数也会被多次编译生成可执行文件,就发生了重定义的问题。通过条件编译,可以解决一种情况下的问题,那就是头文件中只声明,而不定义或者说...

http的chunked编码

利用chunked编码确定接收长度

但远山长 云山乱 晓山青 之前在http响应报文的长度中讲了http响应报文是如何告知客户端他要接收的长度的,其中就讲到了“chunked”编码,那“chunked”编码具体怎么实现长度控制的呢? 首先看一下http的响应头: HTTP/1.1 200 OK Bdpagetype: 1 Bdqid: 0x8329f5fd0015bc7c Cache-Control:...

对‘vtable for ×××’未定义的引用

undefined reference to `vtable for

我与春风皆过客 你携秋水揽星河 这个问题真的是,搞了我好久了,搜了好多,看了好多文章,最后还是自己的问题。。。 代码大概是这样的: class Socket { public: Socket(std::string addr, int port, std::string out_path); virtual ~Socket(); virtual ...