- 博客(91)
- 资源 (17)
- 收藏
- 关注
原创 求 二叉树中和为某一个值的所有路径(非递归版本c语言实现)
题目/* 二叉树中和为某一个值的路径:输入一颗二叉树和一个整数,打印出二叉树中节点值的和为输入整数的所有路径。从树的根节点开始往下一直到叶节点的所有经过的节点形成一条路径。 */思想:借助栈,将从根开始往下的中序节点遍历,如果当前节点的值加上之前的节点的值得和是小于n时,将该值入栈,继续遍历;如果等于,则入栈,打印栈中所有元素,然后出栈该元素,继续往后面元素遍历;如果大于,往后继续遍历。代码:/* 二叉树中和为某一个值的路径:输入一颗二叉树和一个整数,打印出二...
2020-08-29 20:53:42 524
原创 用队列queue实现搜索二叉树的层序遍历、求树高度、求树的镜像树
是需要一层一层处理的问题二叉树的问题,都可以借助一个队列来实现。/* 给定一个二叉树,返回其按层次遍历的节点值。 (即逐层地,从左到右访问所有节点) */single_list_node* LevelOrder_Walk_With_Queue(bstNode* root){ queue* qu = CreateQueue(); single_list_node* head = NULL; bstNode* p = root; if(NULL == p) { return ..
2020-08-24 22:37:40 466
转载 无头链表和有头链表的区别
无头链表和有头链表的区别一点吐槽。做了很多单链表的题目,看到网上有很多无头链表的题目,就一直很疑惑,无头?链表怎么可以无头??然后百度了下,如上面的博文中解释。但是我还是有点不服气,明明还是有头的呀,区别不过是第一个节点有没有存放数据的区别好嘛。谁先把这种两边叫无头链表的??(真误人子弟哎)不过我第一次自己写链表的时候真的有点疑惑第一个节点到底是存不存数据呢?后来想了想,还是存了数据。结果我一直写的是无头链表的。...
2020-08-15 09:13:08 1432
原创 单链表找环入口节点
/*有环链表寻找入口节点1、求环长度:快慢指针,一个指针走一步,一个走两步,当两个指针第一次相遇的时候,走的次数即是环长度2、一个指针先走环的长度步数,另外一个指针从头开始, 然后两个指针同时走,第一次相遇即是环的入口节点*/single_list_node* find_cricle_list_entrance(single_list_node* head){ single_list_node* p1 = head, *p2 = head; int circle_len = 0, n = 0..
2020-08-15 08:42:31 317
原创 查找倒数第k个节点,只遍历一遍
/*15:查找倒数第k个节点(要求只能遍历一次)*/single_list_node* find_Reverse_order_nth_number(single_list_node* head, int n){ int i = 0; single_list_node* p1 = head, *p2 = head; if(n <=0) { printf("input %d is InValid.\n",n); return NULL; } while(p1 != NULL).
2020-08-10 22:49:47 188
原创 倒着打印单链表
/* 16:倒着打印单链表 */void Reverse_print_linked_list(single_list_node* head){ single_list_node* p = head; stack* st = createStack(); while(p != NULL) { push(st, p->data ); p = p->next; } while(!StackIsEmpty(st)) { printf("%d ",GetTop(st)).
2020-08-10 22:48:43 149
原创 逆置单链表
/* 17:逆置单链表 */single_list_node* Reverse_List(single_list_node* head){ single_list_node *p = NULL, *p_left = NULL, *p_right = NULL; p_left = head ; if(NULL == head) { return NULL; } /*p指向即将反转指向的节点,p_left指向被反转后的链表的尾部节点 p_right指向还没处理的部分的第一个节点*.
2020-08-10 22:47:28 225
原创 单链表冒泡排序
/*链表排序:冒泡*/single_list_node* SortList(single_list_node* head){ single_list_node *p = NULL, *p_left = NULL, *p_right = NULL; single_list_node *tmp = NULL, *prev = NULL; p_left = head; if(head == NULL) { return NULL; } p = head->next; p_le.
2020-08-10 22:46:31 159
原创 两个有序单链表合并
/*合并两个有序链表*//*思想:可以这样想,是将两个链表list1, list2合成一个第三个链表merge_list的过程。1. 先从两个链表的头中选择小的节点,初始化作为合成链表merge_list的头,2. 然后从两个链表头开始,选择两个链表头节点小的那一个,开始找,找到全部小于另外一个链表头的所有节点,3. 将这部分加到merge_list,然后这个链表的头更新,继续开始重复2, 直到有一个链表到达结尾null*/single_list_node* Merge_two_ordered.
2020-08-10 22:45:28 1288
原创 单向链表--查找中间节点
/*查找中间节点*//*思想很简单,两个指针,同时开始从头走,一个一次走两步,一个一次走一步,偶数节点时候,中间的返回前面或后面的都可,奇数个节点的时候返回中间节点*/single_list_node* Find_middle_node(single_list_node* head){ single_list_node *p1 = NULL, *p2 = NULL; if(NULL == head) { return NULL; } p1 = p2 = head; while(p.
2020-08-10 22:44:26 772
原创 单向链表基础操作(删除、插入、查询)代码实现及进阶(反转、排序、逆置、查找倒数第K个节点、查找中间节点)
single_linked_list.h/* **功能:应用C语言实现单链表的各项操作 ** 1:建立节点 ** 2:打印单链表 ** 3:尾插 ** 4:尾删 ** 5:头插 ...
2020-08-10 22:39:40 312
原创 用两个栈实现队列(c语言代码)
栈的代码详见:stack的数组实现和测试队列的数组实现:队列的数组实现(c语言代码)思想:栈 先进后出,队列先进先出。/*利用两个栈实现队列*/typedef struct QueueStack{ stack* st1; stack* st2;}queuestack;队列尾部添加新元素:st1的栈顶push新元素(因此st1的栈顶是最新写到队列的元素);队列头部删除元素:1. 如果栈st2中没元素,则栈st1中栈底是最早写入元素,将栈st1中的元素依次pop出来,写入s
2020-08-08 20:25:34 1367
原创 队列的数组实现(c语言代码)
队列:先进先出的线性表三个要素:1.存放数据的数组;2.队列头:指向数据存放的第一个位置3、队列尾:指向已存放数据的下一个位置queue.h#ifndef __QUEUE_H_#define __QUEUE_H_typedef struct Queue{ DataType data[length]; int head; int tail;}queue;queue* CreateQueue();void DeleteQueue(queue* qu);int
2020-08-08 18:31:41 837
原创 stack的数组实现和测试
栈:实现一种先进后出的数据结构数组实现栈的几个要素:1.数据:存放数据的数组2. 栈顶 :指向栈的最上面一个元素的上面一个位置3. 栈底:指向栈的第一个元素的位置stack.h#ifndef __STACK_H_#define __STACK_H_#define bool_t int#define length 100typedef float DataType ;typedef struct Stack{ DataType data[length]; i.
2020-08-08 11:27:24 424
原创 根据二叉树的中序遍历序列和前序遍历序列恢复出二叉树
节点结构体如下:typedef struct BinaryTreeNode{ int value; struct BinaryTreeNode* left; struct BinaryTreeNode* right;}BinaryTree_Node;背景知识:前序遍历:访问顺序 根 左 右中序遍历:访问顺序 左 根 右所以,前序的第一个元素是整棵树的根节点,根节点后面先是左子树,然后右子树。中序序列中,根节点所在的位置的左边是根节点的左子树,右边是右子树。因此每次可根据..
2020-08-02 11:19:26 406
原创 面试题目--一步步优化快速排序
#if 1void swap(int* a, int i, int j){ int tmp = a[i]; a[i] = a[j]; a[j] = tmp;}void select_piovt(int *a, int start, int end){ int mid = (start + end)/2; //end is max if(a[end] < a[mid]) { swap(a, mid , end); } if(a[end] < a[start]).
2020-08-01 21:27:04 272
原创 linux进程挂死时候如何定位问题
1、先ps aux查看进程状态, D是挂死了(死循环,一直运行)STAT狀態位常見的狀態字符D 无法中断的休眠状态(通常 IO 的进程);R 正在运行可中在队列中可过行的;S 处于休眠状态;T 停止或被追踪;W 进入内存交换 (从内核2.6开始无效);X 死掉的进程 (基本很少見);Z 僵尸进程;< 优先级高的进程N 优先级较低的进程L 有些页被锁进内存;s 进程的领导者(在它之下有子进程);l 多进程的(使用 CLONE_THREAD, 类似 NPTL pth...
2020-06-09 19:19:40 2001
原创 个人分支一个commit点提MR时候出现多个commit点
【问题】假设你在txt_main_2分支修改提交,有一个commit点,然后push到远端,准备提交到master分支,发现有3个commit点。【原因】之所以出现多个commit点是因为,在上一次你的txt_main_1分支同步master分支的时候,直接从mster分支merge到txt_main_1,导致这次提交的时候把有些原来主线的commit点识别成为你当前分支txt_main_1的...
2019-12-13 11:48:02 4432
转载 linux内核函数之 blk_plug
https://blog.csdn.net/liumangxiong/article/details/10279089使用:/** * generic_writepages - walk the list of dirty pages of the given address space and writepage() all of them. * @mapping: addr...
2019-11-24 15:37:28 1089
转载 malloc和mmanp函数的区别
测试MALLOC 与 MMAP之间读写的性能差异, 测试方法如下:1)编写两个MALLOC程序,一个是随机读,一个是随机写,获取1G内存空间,空间中存放数据结构为 一个总大小为28字节的数据结构,包括一个16字节的字符串, 3个INT数,用于模拟索引结构2)循环100W次,随机获取1G空间范围内的数, 以获取到的随机数为下标,对MALLAC获取到的内存地址进行随机写入 和 读取 并打印完成...
2019-08-08 15:57:01 647
转载 nosetests -a 选项运行用例筛选
转载自:https://blog.csdn.net/wsbl52006/article/details/88978456很多时候我们写的case会非常多,通常会对用例的重要程度做一些分级,比如主流程用例、次要流程用例之类的通过nosetest -h 我们了解到有一个 -a 参数可以达到这个目的-a ATTR, --attr=ATTR Run only tests that ...
2019-08-05 14:17:41 1045
转载 gdb coredump 查看栈信息
https://blog.csdn.net/suxinpingtao51/article/details/12072559
2019-06-21 19:13:45 530
转载 GCC编译器内置宏likely(x)与unlikely(x)函数讲解
这篇文章讲得不错,收藏https://www.2cto.com/kf/201709/683510.html
2019-04-11 10:02:06 589
原创 pyinstaller打包生成的exe文件的执行时候弹出黑框,出错时候一闪而过的解决办法
pyinstaller如何打包python可执行文件,请参考下面文章https://blog.csdn.net/u013896064/article/details/80860569下面是我的spec文件:nose_run.spec要想生成的exe文件在执行的时候不弹出黑框,且在当前的控制台运行,出错的时候也可以看到错误信息,就把 console这个参数改成True,然后重新打包。...
2019-03-28 16:15:01 6825
原创 c语言单元测试(cunit)打桩,如何写打桩文件
/** * COPYRIGHT NOTICE * Copyright (c) 2010, * ALL rights reserved. * *@file stub_test.c *本文件定义了malloc() regcomp() regexec() 函数的打桩函数 * * 版本 作者 日期 修订说明 * 1.0.0 t 2018-08-01 最初版本 *...
2018-08-10 13:55:20 6864 2
原创 cvte2018秋季招聘c++开发面试面经
今天cvte的面试官很多时候是想让你展示自己最懂什么,然后他听你展示,每次要问c++ ,数据结构,Linux网络编程之前他都会问一下你了解的深浅,如果你说很熟悉他就会问的很多,如果你说只是了解他就只是问几个简单的问题,所以最好不要谦虚也不要夸大,诚实回答就好,只有这样你才能展示你最多不会让面试官觉得你是在吹嘘或者你太过谦虚面试官也没有了解你的真真水平.1.做个自我介绍2.先说说多态
2017-09-16 20:34:31 735
原创 题目描述:给定一个字符串,求出其所有可能的字符组合. 比如:abc 其所有组合是:a,b,c,ab,ac,bc,abc
/*题目描述:给定一个字符串,求出其所有可能的字符组合.比如:abc 其所有组合是:a,b,c,ab,ac,bc,abc是递归的思想:首先你拿到的是abc,你可以依次打印出去掉c,b,a的组合:ab,ac,bc然后递归用这些子串去调动这个函数,比如ab:依次去掉b,a打印出a,b;ac依次打印出a,c;bc依次打印出b,c;但是存在一个问题打印重复了,这个可以传进去一个参数pos来解
2017-09-08 11:09:14 2195
原创 01背包问题 动态规划 c语言实现
/*在编号为a,b,c,d,e 的五件物品,他们的重量分别是2,2,6,5,4.价值分别是6,3,5,4,6,给你个承重是10的背包,如何让装入背包的物品具有最大价值.*//* * 基本的0-1背包问题: * 已知有N类物品,每类物品都只有一件,对应的重量为w[i],价值为v[i]。 * 背包最多承重为W,在不超出承重范围的前提下,求能拿的物件的最大价值为多少 * *这是DP的一个经
2017-09-06 16:15:47 1980
原创 如何借助于syslogd生成自己的日志,并且将自己应用的日志放进系统日志目录
恩..Linux学习man是个好东西.man 8 rsyslogd 查看系统日志守护进程man 5 rsyslog.conf 查看怎么在/etc/rsyslog.conf里面配置自己的log目录man 3 syslog 查看syslogd的接口函数
2017-08-24 11:49:15 495
原创 summary about laysnc(little details)
重构代码的书籍:> martin forler (建议工作1到2年读) > kent bank (建议工作4年读)泛型书籍:> > 设计模式书籍:> > >设计模式: 23种cp的 --preserve选项:cp --preserve=mode src des :拷贝时只保留文件的权限,其他被舍弃 cp --pr
2017-08-16 10:05:53 421
原创 图的深度优先搜索算法DFS
图的深度优先搜索正如其名"深度优先",算法从一个点开始遍历,只要还有可能就尽量的"深入"遍历.第一个节点是v,深度优先搜索总是对最近"发现"的节点的出发边进行探索,直到当前节点的所有出发边已经探索完成,则算法"回朔"到该节点的父节点,去探索父节点的出发边.该过程会一直持续到由v发出的边的所有边都探索完成,如果该图中还有为发现的节点,则从剩下的未发现的节点中选取一个节点开始深度优先算法的运行,重
2017-08-14 10:15:08 686
原创 关于图的广度优先搜索算法的思考.
所谓图的广度优先搜索:对于一个无向或者有向联通图,抓住任意一个节点(假设是s)开始,找到与这个节点直接相连的所有节点,这些节点的深度(depth)是相同的(注意这里所说的深度:是在广度优先遍历的过程中会形成一颗广度优先搜索树,深度即位这个节点在这棵树中的深度,也就是从s到该节点的最短路径),即在广度优先搜索树中的同一层,然后再去找这些节点的直接相连的节点,找到的这些子节点比其父节点的深度+1,这样
2017-08-13 20:28:38 368
原创 把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。 输入一个非递减排序的数组的一个旋转,输出旋转数组的最小元素。 例如数组{3,4,5,1,2}为{1,2,3,4,5}的一个旋转,该数
#include#includeusing namespace std;int MinInOrder(vector rotateArray){ int result = rotateArray[0]; int index1 = 0; int index2 = rotateArray.size()-1; for(int i=index1+1;i<index2;++i) { i
2017-08-10 13:06:12 504
原创 用两个栈来实现一个队列,完成队列的Push和Pop操作。 队列中的元素为int类型。
class Solution{public: void push(int node) { stack1.push(node); } int pop() { int t=0; if(stack2.empty()) { if(stack1.empty())
2017-08-09 14:25:41 724 1
原创 输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。例如输入前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{4,7,2,1,5
#include#includeusing namespace std;//参数是vector 实现// Definition for binary treestruct TreeNode { int val; struct TreeNode *left; struct TreeNode *right; TreeNode(int x) : val(x), left(N
2017-08-09 11:24:02 470
原创 在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。
#include#includeusing namespace std;//optimized codeint find_2(int key,vector > vec){ int found = 0; if(vec.size() == 0 ) { return found; } int row = 0; int column = vec[0].size()-1; fo
2017-08-08 08:46:47 565
原创 strtok_r 源码(测试过的,正确的,之前在网上找的内存错误)
#include#include#includeusing namespace std;char* strtok_1(char* string_org,const char* demial) { static unsigned char* last; //保存分隔后剩余的部分 unsigned char* str; //返回的字符串
2017-08-03 15:27:15 503
c语言实现快速排序(逐步优化)
2020-08-01
source_insight_color_cfg.rar
2020-06-06
一个小项目的cunit单元测试例子
2018-08-13
一步一步写Makefile
2018-08-10
用TCPIP进行网际互联第一卷
2017-04-09
UNIX网络编程第二卷
2017-04-03
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人