自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

  • 博客(35)
  • 收藏
  • 关注

转载 实现网络连通检测的五种方法

方法一:windows下调用icmp.dll库,实现ping连通检测,缺点是不能跨平台,受限于icmp.dll库:// windows下调用icmp.dll库实现网络连通检测示例代码#include <Winsock2.h>#include <iphlpapi.h> #include <stdio.h> #pragma comm...

2019-04-04 14:09:00 2054

转载 最小堆实现哈夫曼树构造

0. 序本以为用最小堆实现个哈夫曼树是个简单的事情,结果一不小心就花了好几个小时才写完。。。实现过程中主要有三个方面的问题没注意,导致花了很多时间进行调试。一是多重指针malloc分配时要多加注意;二是指针一定要记得初始化,默认不一定为NULL;三是结构体赋值问题。其余的边界问题小心就好了。。另,由于本人水平有限,如有任何问题,欢迎指出解决,谢谢大家!详细结果如下:1...

2018-07-19 13:16:00 1708

转载 最小堆的基本操作实现

1. 最小堆结构定义如下:// 定义最小堆结构struct MinHeap { int* p; // 存储元素的数组 int size; // 当前元素个数 int capacity; // 最大容量};2. 最小堆的基本操作函数如下:MinHeap* createMinHeap(int capacity); // 创建最小堆bo...

2018-07-18 16:54:00 731

转载 二叉搜索树的基本操作实现

1. 二叉搜索树结点结构定义如下:// 二叉搜索树节点定义struct TreeNode { int data; TreeNode* lChild; TreeNode* rChild; TreeNode(int val) : data(val), lChild(NULL), rChild(NULL) {}};2. 二叉搜索树的基本操作函数如下:...

2018-07-16 21:59:00 180

转载 LeetCode:两数之和

C++示例程序:class Solution {public: vector<int> twoSum(vector<int>& nums, int target) { int length = nums.size(); vector<int> result; unordered_ma...

2018-07-07 21:38:00 118

转载 LeetCode:移动零

C++示例程序:class Solution {public: void moveZeroes(vector<int>& nums) { int number = 0; int length = nums.size(); for(int i = 0; i < length; i++) { ...

2018-07-07 21:37:00 132

转载 LeetCode:两个数组的交集 II

C++示例程序:class Solution {public: vector<int> intersect(vector<int>& nums1, vector<int>& nums2) { vector<int> result; unordered_map<int, in...

2018-07-07 21:35:00 108

转载 LeetCode:只出现一次的数字

C++示例程序:class Solution {public: int singleNumber(vector<int>& nums) { int length = nums.size(); if (length == 0 || length == 2) return 0; for...

2018-07-07 21:34:00 90

转载 LeetCode:存在重复

C++示例程序:class Solution {public: bool containsDuplicate(vector<int>& nums) { unordered_map<int, int> um; for (int i = 0; i < nums.size(); ++i) { ...

2018-07-07 21:33:00 97

转载 LeetCode:旋转数组

C++示例程序:class Solution {public: void rotate(vector<int>& nums, int k) { int length = nums.size(); if (length <= 1 || k < 0) return; k ...

2018-07-07 21:30:00 74

转载 LeetCode:买卖股票的最佳时机 II

C++示例程序:class Solution {public: int maxProfit(vector<int>& prices) { int profit = 0; for (int i = 1; i < prices.size(); i++) { if (prices[i] - pric...

2018-07-07 21:29:00 82

转载 LeetCode:从排序数组中删除重复项

C++示例程序:class Solution {public: int removeDuplicates(vector<int>& nums) { if (nums.empty()) { return 0; } int number = 0; for (int ...

2018-07-07 21:27:00 85

转载 最大堆的基本操作实现

1. 最大堆结构定义如下:// 最大堆结构定义struct MaxHeap { int* p; // 存储堆元素的数组 int size; // 堆当前元素个数 int capacity; // 堆的最大容量};2. 最大堆的基本操作函数如下:MaxHeap* createMaxHeap(int capacity); // 创建最大堆boo...

2018-07-07 17:10:00 157

转载 二叉树的基本操作实现

1. 二叉树结点结构定义如下:// 树节点定义struct TreeNode { int data; TreeNode* lChild; TreeNode* rChild;};2. 二叉树的基本操作函数如下:TreeNode* createBinTree(); // 先序创建二叉树(递归)void preOrderTraverse(TreeNode*...

2018-07-05 16:26:00 168

转载 链栈的基本操作实现

1. 链栈含头结点模型示意图如下:2. 链栈结构定义如下:struct StackNode { int data; StackNode* next;};3. 链栈的基本操作函数如下:StackNode* createStack(); // 创建栈头结点void Push(StackNode* head, int item); // 入栈int Pop(S...

2018-07-05 15:09:00 783

转载 顺序栈的基本操作实现

1. 顺序栈模型示意图如下:2. 顺序栈结构定义如下:#define MAXSIZE 10struct StackNode { int data[MAXSIZE]; int top;};3. 顺序栈的基本操作函数如下:StackNode* createStack(); // 创建空栈void Push(StackNode* stack, int ite...

2018-07-05 13:40:00 853

转载 链队列的基本操作实现

1. 链队列含头结点模型示意图如下:2. 链队列结构定义如下:// 结点类型struct QueueNode { int data; QueueNode* next;};// 链队列结构struct LinkQueue{ QueueNode* front; QueueNode* rear;};3. 链队列的基本操作函数如下:Link...

2018-07-05 13:40:00 1182

转载 LeetCode:合并两个有序链表

C++示例:/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int x) : val(x), next(NULL) {} * }; */class Solution {public: ...

2018-07-05 00:00:00 80

转载 LeetCode:反转链表

C++示例:/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int x) : val(x), next(NULL) {} * }; */class Solution {public: ...

2018-07-04 23:58:00 84

转载 LeetCode:删除链表的倒数第N个节点

C++示例:/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int x) : val(x), next(NULL) {} * }; */class Solution {public: ...

2018-07-04 23:55:00 91

转载 LeetCode:删除链表中的节点

C++示例:/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int x) : val(x), next(NULL) {} * }; */class Solution {public: ...

2018-07-04 23:50:00 85

转载 单链表的基本操作实现

1. 单链表含头结点模型示意图如下:2. 单链表节点结构定义如下:struct ListNode { int val; ListNode* next; ListNode(int x) : val(x), next(NULL) {}};3. 单链表的基本操作函数如下:ListNode* createList(); // 手动输入创建一个链表void ...

2018-07-03 23:28:00 289

转载 C/C++程序中常见的与内存有关的错误

1. 间接引用坏指针int main(){ int val; scanf("%d", val); // Error! scanf("%d", &val); // Ok! return 0;}2. 读未初始化的内存int main(){ int n = 10; int* y = (int*) malloc(n * siz...

2018-06-25 22:06:00 209

转载 C++:一些常见知识点的区别(整理)

struct与class的区别C语言中struct与class的区别:struct只作为一种复杂数据类型定义的结构体,不能用于面向对象编程;C语言没有class关键字。C++语言中struct与class的区别:对于成员访问权限以及继承方式,class默认都是private,struct默认是public;class可以用于表示模板类型,struct不行;一般来说,用到继承时常用c...

2018-06-15 16:43:00 147

转载 TCP的传输连接管理

TCP传输连接管理概述TCP传输连接有三个阶段,即:连接建立(三次握手)、数据传送和连接释放(四次挥手)。TCP连接建立都是采用客户服务器方式。主动发起连接建立的应用进程叫做客户(client)。被动等待连接建立的应用进程叫做服务器(server)。TCP的三次握手TCP连接过程中常见符号意义如下:SYN---同步标记,当SYN=1,ACK=0时,表明这是一个连接请...

2018-06-15 04:30:00 528

转载 C++:三种类间关系

Inheritance(继承)- 表示 is-a ,如下代码所示:class A {private: int a;};class B : public A {private: int b;};- 继承关系下的构造和析构:构造由内而外Derived的构造函数首先调用Base的default构造函数,然后才执行自己。...

2018-05-29 23:49:00 148

转载 C++:内存泄漏与内存溢出的区别

内存溢出(out of memory):是指程序在申请内存时,没有足够的内存空间供其使用,出现out of memory;例如申请了一个int型的地址空间,但给它存放了long型的数据,就会导致内存溢出。内存泄漏(memory leak):是指程序申请内存后,无法释放已申请的内存空间,内存泄漏多了会导致可用内存空间变小,进一步造成内存溢出。转载于:https://w...

2018-05-23 16:49:00 162

转载 C++:堆和栈的区别

(1)管理方式:堆中资源由程序员控制(通过malloc/free、new/delete,容易产生memory leak),栈资源由编译器自动管理。(2)系统响应:对于堆,系统有一个记录空闲内存地址的链表,当系统收到程序申请时,遍历该链表,寻找第一个大于所申请空间的空间的堆结点,删除空闲结点链表中的该结点,并将该结点空间分配给程序(大多数系统会在这块内存空间首地址记录本次分配的大...

2018-05-17 02:01:00 172

转载 C++:五种内存分配区域

C/C++编译的程序所占用内存区域一般分为以下5个部分:栈区(stack):由编译器自动分配和释放,用来存放函数的参数、局部变量等。其操作方式类似于数据结构中的栈。堆区(heap):一般由程序员分配和释放(通过malloc/free、new/delete),若程序员没有释放,则程序结束时由操作系统回收。它与数据结构中的堆是两回事,分配方式类似于链表。全局/静态...

2018-05-17 01:08:00 192

转载 C++:struct与class的区别

(1)C语言中struct与class的区别:struct只作为一种复杂数据类型定义的结构体,不能用于面向对象编程;C语言没有class关键字。(2)C++语言中struct与class的区别:对于成员访问权限以及继承方式,class默认都是private,struct默认是public;class可以用于表示模板类型,struct不行;一般来说,用到继承时常用class,没用...

2018-05-17 00:18:00 124

转载 C++:指针与引用的区别

(1)指针是一个实体,有分配内存空间,引用只是一个别名,不分配内存空间(2)指针不用但最好初始化,引用必须初始化(3)引用只能初始化一次,指针可以多次赋值(4)可以有const指针,但没有const引用,例如 int* const p合法,int& const p有些编译器会报错,有些编译器会警告并忽视该const修饰符(5)指针可以指向空值,引用不能指向空...

2018-05-16 23:48:00 81

转载 C++:new与malloc的区别

1.属性new/delete是操作符,是C++关键字,需要编译器支持;malloc/free是库函数,需要头文件支持。2.参数使用new操作符动态分配内存时无需指定内存块大小,编译器会根据类型自行计算;malloc分配内存时需要显式地指出所需内存块大小。3.返回类型new操作符内存分配成功时会返回相应对象类型的指针,无需进行强制类型转换,符合类型安全性,分配失败...

2018-05-08 12:27:00 96

转载 ROS:使用Qt Creator创建GUI程序(三)之stellax_gui_ws源码编译

开发环境:Ubuntu14.04ROS indigo versionQt Creator 3.0.1 based on Qt 5.2.1ROS相关包安装:参照ros_by_example(indigo)书中第五章,安装必要的包:$ sudo apt-get install ros-indigo-turtlebot-bringup \ ros-indigo-turtle...

2018-05-07 14:22:00 181

转载 ROS:使用Qt Creator创建GUI程序(二)

开发环境:Ubuntu14.04ROS indigo versionQt Creator 3.0.1 based on Qt 5.2.1步骤如下:(前提:成功完成ROS:使用Qt Creator创建GUI程序(一)中所有步骤)①关闭所有终端②打开新的终端,输入下述命令:$ qtcreator③重复“ROS:使用Qt Creator创建GUI程序(一)”中启...

2018-05-07 14:09:00 423

转载 ROS:使用Qt Creator创建GUI程序(一)

开发环境:Ubuntu14.04ROS indigo versionQt Creator 3.0.1 based on Qt 5.2.1步骤如下:(按照下面命令一步步来,亲测可行)(一)安装qt-ros相关的包打开终端,输入下面的命令:$ sudo apt-get install ros-indigo-qt-create$ sudo apt-get insta...

2018-05-06 22:33:00 346

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

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