- 博客(25)
- 资源 (7)
- 收藏
- 关注
原创 二叉树中叶子节点的个数第K层的节点个数
叶子节点的个数size_t _GetLeefNode(Node *pRoot){ if (pRoot == NULL) return 0; if (NULL == pRoot->pLeft&&NULL == pRoot->pRight) return 1; return _GetLeefNode(pRoot->pLeft) + _GetLee
2017-07-29 22:13:16 1077
原创 二叉树的层序遍历 N!结尾0的个数
二叉树的层序遍历void _LevelOrder(Node *pRoot) { Node *pCur = pRoot; queue<Node *> q; q.push(pCur); while (!q.empty()) { Node *pTop = q.front();
2017-07-24 00:09:44 295
原创 判断是否是栈的弹出序列&&二进制中1的个数
判断是否是栈的弹出序列bool IsPop(char *PopOrder, char *PushOrder,int len){ if (PopOrder == nullptr || PushOrder == nullptr || len <= 0) return false; bool Possible = false; char *PopStart = P
2017-07-23 00:14:08 296
原创 linux复习之进程基础知识
典型进程的ID及其功能 ID 进程名 中文名 类型 作用 0 swapper 交换进程 系统进程 它是内核⼀一部分,不执⾏行磁盘上的程序,是调度进程。 1 init init进程 用户进程 永远不会终⽌止,启动系统,读取系统初始化的文件。 2 pagedaemon 页精灵进程 系统进程 虚存系统的请页操作实际用户和有效用
2017-07-22 23:41:13 311
原创 day19-day21代码片段
1. 1-n中某数字出现的次数#include<iostream>using namespace std;int getNum(int n,int k){ int count = 0; int x; for (int i = 1; x=n/i; i *= 10) { int high = x / 10; if (k == 0)
2017-07-21 23:32:09 396
原创 带有getMin栈
带有getMin栈#include<iostream>#include<stack>using namespace std;template<class T>class MinStack{public: void Pop() { if (st.top() == minSt.top()) { minSt.pop();
2017-07-21 13:52:53 233
原创 使用两个栈实现一个队列+使用两个队列实现一个栈
1. 使用两个栈实现一个队列+使用两个队列实现一个栈两个栈实现一个队列#include<iostream>#include<stack>using namespace std;template<class T>class StackQueue{public: void Push(T data) { Spush.push(data); }
2017-07-20 13:18:01 274
原创 linux知识总结4
1. gdb调试这里写代码片2. 进程切换需要注意哪些问题? 保存处理器PC寄存器的值到被中止进程的私有堆栈; 保存处理器PSW寄存器的值到被中止进程的私有堆栈; 保存处理器SP寄存器的值到被中止进程的进程控制块; 保存处理器其他寄存器的值到被中止进程的私有堆栈; 自待运行进程的进程控制块取SP值并存入处理器的寄存器SP; 自待运行进程的私有堆栈恢复处理器各寄存器的
2017-07-20 00:07:40 266
原创 逆转链表 删除链表非尾节点
逆转链表 删除链表非尾节点void deleteNotTailNode(PNode &pHead, PNode pNode){ if (pNode == nullptr || pHead == nullptr) return; if (pNode == pHead) { pHead = pHead->_pNext; delet
2017-07-18 22:37:19 204
原创 判断链表是否有交点若有找出交点
.判断两个链表是否相交,若相交,求交点。(假设链表不带环)ListNode *InstersecNode(ListNode *pHead1, ListNode *pHead2){ bool flag = IsIntersec(pHead1, pHead2); if (!flag) return nullptr; ListNode *pNode1 = pHea
2017-07-17 21:51:41 287
原创 day16-day18代码片段
1. 二叉树的层序遍历void _LevelOrder(Node *pRoot) { Node *pCur = pRoot; queue<Node *> q; q.push(pCur); while (!q.empty()) { Node *pTop = q.front();
2017-07-17 14:18:27 263
原创 http服务器小项目
1. http项目整体框架1.1http协议格式http请求由三部分组成,分别是:起始行、消息报头、请求正文Request Line<CRLF>Header-Name: header-value<CRLF>Header-Name: header-value<CRLF>//一个或多个,均以<CRLF>结尾<CRLF>body//请求正文起始行以一个方法符号开头,以空格分开,后面跟着请求的URI和协
2017-07-17 11:40:15 866 1
原创 linux知识点总结3
环境变量每个用户登陆后都会有自己专属的环境变量,在linux中环境变量一般都是大写加下划线命名环境变量。环境变量类似一个指针,在查看环境变量时要在前面加$.linux变量分为本地变量和环境变量 环境变量是一种全局变量,存在与所有shell中,环境变量具有继承性,子进程可以继承父进程的环境变量。 本地变量当前shell中的变量,本地变量包含环境变量,本地非环境变量不具有继承特性。在l
2017-07-17 00:58:11 515
原创 求带环链表入口点 计算时间复杂度
求带环链表入口点 计算时间复杂度ListNode *MeetNode(ListNode *&pHead){ if (pHead == nullptr&&pHead->_pNext==nullptr) return nullptr; ListNode *pSlow = pHead->_pNext; ListNode *pFast; if (pSlow-
2017-07-16 23:13:30 475
原创 翻转链表查找链表的倒数第k个节点位运算加法
反转单链表void Reverse(ListNode *&pHead){ if (pHead == nullptr||pHead->_pNext==nullptr) return; ListNode *pCur = pHead; ListNode *pNewHead = nullptr; ListNode *pTemp = nullptr;
2017-07-16 21:15:17 300
原创 代码片段day13-day15
1. 判断是否是树的子树#include<iostream>#include<cassert>using namespace std;struct BinaryTreeNode{ struct BinaryTreeNode *_pLeft; struct BinaryTreeNode *_pRight; char _data; BinaryTreeNode(i
2017-07-15 13:55:46 224
原创 合并有序链表 计算1加到n不用条件判断
合并两个有序链表,合并以后的链表依旧有序。/* 给定两个有序单链表的头节点 head1 和 head2,请合并两个有序链表,合并后的链表依然有序,并返回合并后链表的头节点。 例如: 0->2->3->7->NULL 1->3->5->7->9->NULL 合并后的链表为:0->1->2->3->3->5->7->7->9->NULL*/非递归法:后续更新递归法void Merge(Li
2017-07-14 22:57:52 649
原创 代码片段10-12
1. 并查集/*-1 -1 -1 -1 -1 -1 -1 -1{1, 2} {2, 3} {4, 5} {1, 2}*/#include<iostream>using namespace std;class UnionSet{public: UnionSet(int n) :_size(n + 1) { _a = new int
2017-07-12 11:53:28 242
原创 linux面试准备2
1. 线程的实现方式. (也就是用户线程与内核线程的区别)内核级线程:切换由内核控制,当线程进行切换的时候,由用户态转化为内核态。切换完毕要从内核态返回用户态;可以很好的利用smp,即利用多核cpu。windows线程就是这样的。用户级线程内核的切换由用户态程序自己控制内核切换,不需要内核干涉,少了进出内核态的消耗,但不能很好的利用多核Cpu,目前Linux pthread大体是这么做的。 线
2017-07-11 17:21:30 735
原创 Linux面试要点
1. 进程有那几种状态,状态转换图,及导致转换的事件 如上图所示,进程包括三种状态:就绪态、运行态和阻塞态。详细说明如下: 注意:创建和退出不是进程的状态。阻塞和就绪的区别:阻塞是等待除CPU以外的资源,而就绪等待的是CPU资源。就绪——执行:对就绪状态的进程,当进程调度程序按一种选定的策略从中选中一个就绪进程,为之分配了处理机后,该进程便由就绪状态变为执行状态;执行——阻塞:正在执行的
2017-07-10 20:06:46 1328
原创 day6-day9代码片段
1. 模拟实现atoi#include<iostream>#include<cassert>using namespace std;enum Legal{valid=0,legal=1};int flag = 1;int fuhao = 1;int strToInt(const char *str){ long long num = 0; while (*str !=
2017-07-07 23:10:32 582
原创 合法IP&窗口最大值数组&打印素数&递归逆序一个栈&栈排序另一个栈&MyString&寻找数组中出现的重复字符&数组中的重复数字&逆序打印链表&空格替换成%20
1. 判断字符串是否是IP地址#include<stdio.h>#include<string.h>int main(void){ char str[31], temp[31]; int a, b, c, d; while(gets(str) != NULL) { if (sscanf(str, "%d.%d.%d.%d", &a, &b, &c
2017-07-04 12:39:01 412
原创 IO中同步异步阻塞非阻塞的区别
一、同步与异步同步/异步, 它们是消息的通知机制1. 概念解释A. 同步所谓同步,就是在发出一个功能调用时,在没有得到结果之前,该调用就不返回。按照这个定义,其实绝大多数函数都是同步调用(例如sin isdigit等)。但是一般而言,我们在说同步、异步的时候,特指那些需要其他部件协作或者需要一定时间完成的任务。最常见的例子就是 SendMessage。该函数
2017-07-03 16:49:50 547
原创 多态&指针访问虚函数&不能被继承的类&快速排序&N皇后问题&插入排序&堆排序&merge归并排序&栈上生成对象&两个栈实现一个队列
多态/* 1. 要想实现覆盖(重写)父类必须声明为virtual,子类可以不声明为virtual.-->FunB() 2. 派生类重写基类的虚函数实现多态,要求函数名、参数列表、返回值完全相同。(协变除外) 3. 基类中定义了虚函数,在派生类中该函数始终保持虚函数的特性。 4. 只有类的非静态成员函数才能定义为虚函数,静态成员函数不能定义为虚函数。 5. 如果
2017-07-02 22:25:06 641
原创 linux命令eval的用法
eval用法功能说明:告知shell取出eval的参数,重新运算求出参数的内容。 语 法:eval [参数] 补充说明:eval可读取一连串的参数,然后再依参数本身的特性来执行。 参 数:参数不限数目,彼此之间用分号分开。 1. 执行命令行之前扫描它两次,再次运算求出参数的内容。 2. eval取得最后一个参数 $()与· · 三者的的区别?反引号“本身对\进行了转义,并保留
2017-07-01 17:28:52 350
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人