- 博客(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关注的人