- 博客(24)
- 收藏
- 关注
原创 判断单链表是否带环,环的入口位置?
当我们做链表的编程题时,经常会遇到给定一个单链表(头结点)判断单链表知否带环等如下的问题。 1. 判断链表是否带环? 2. 环的入口位置在哪里? 3. 环的长度是多少。问题1: 首先要判断一个链表是否带环,我们可以分别考虑一下带环和不带环两种情况的区别。如果链表不带环,我们用一个指针从头遍历到尾 指针最终会指向一个NULL 。如果链表带环指针一旦进入环就会一直循环遍历,这样就会陷入
2017-09-01 13:40:05
828
2
原创 排序算法总结
在程序中当我们需要对数据进行排序时,会面临很多排序算法,这个时候对排序算法的选择多种多样。下面我们列出以下一些常用的排序算法。 常用的排序算法有: 冒泡排序 选择排序 插入排序 快速排序 归并排序 堆排序 希尔排序 1. 冒泡排序(Bubble Sort) 基本思想: 在要排序的一组数中,对当前还未排好序的范围内的全部数,自上而下对相邻的两个数依次进行比较和调整,让较大的数往下沉,较小的往
2017-08-20 19:11:51
471
原创 网络编程面试题
1.OSI七层模型和TCP/IP四层模型 OSI七层模型 应用层 表示层 会话层 传输层 网络层 数据链路层 物理层 TCP/IP四层模型 应用层 传输层 网际互联层 网络接口层 对应关系(图示) 2.tcp和udp的区别(1)TCP和UDP都是传输层协议,TCP是面向连接的传输(通过三次握手保证有连接),UDP是无连接的传输。 (2)TCP是面向字节流的传输,他可以将信息分割成
2017-08-12 17:00:04
743
原创 迭代器失效
在STL容器中,经常会出现迭代器失效导致程序运行时崩溃,那迭代器究竟是如何失效的呢? 迭代器(iterator)是一个可以对其执行类似指针的操作(如:解除引用(operator*())和递增(operator++()))的对象,我们可以将它理解成为一个指针。但它又不是我们所谓普通的指针,我们可以称之为广义指针,你可以通过sizeof(vector::iterator)来查看,所占内存并不是
2017-08-10 20:35:55
546
原创 内存对齐详解
首先定义两个结构体如下,我们看一下两个结构体大小:#include <iostream>using namespace std;struct A{ int a; char b; short c;};struct B{ char b; int a; short c;};int main(){ cout <<"sizeof(struct
2017-08-09 23:08:45
1568
3
原创 C/C++面试常考关键字
C/C++面试常考关键字总结1.static关键字的作用? 1)、static 申明的变量为静态全局变量,该变量存储在静态数据区,当整个程序结束时该变量才会被释放,只是生命周期延长,作用域不受影响。 2)、static申明的变量定义时如果不初始化默认初始化为0 3)、被static修饰的变量只能作用于本文件内,即使被extern修饰也不行2.const,define的区
2017-08-08 20:43:32
4373
原创 浅析volatile关键字
为什么会有volatile关键字呢? 首先我们先来了解一下程序优化处理 程序优化处理的主要方法: (1)由于CPU的处理速度远远大于内存的读写速度,为提高整体性能,在硬件上引入硬件高速缓存Cache,就加速对内存的访问。 (2)CPU中指令的执行顺序,如果没有相关性的指令可以乱序执行,这样一便可以充分利用CPU的指令流水线,提高执行速度。 (3)编译器自动对程序进行优化。编译器优化常用的方
2017-08-08 20:28:29
493
原创 用Huffman树实现文件压缩与解压
用Huffman树实现文件的压缩与解压 我们先来了解一下什么是Huffman树? 我们平常所使用的Zip等压缩工具都是借助Huffman树实现的,Huffman是一种特殊的二叉树,它是一种加权路径最短的二叉树, 因此也称为最优二叉树。 (下面用一幅图来说明) 它们的带权路径长度分别为:图1: WPL=3*2+4*2+2*2+10*2=48 图2: WPL=3*3+2*3+4*
2017-08-07 19:22:21
3874
1
原创 C++常用数据类型转换的区别
C++常用数据类型转换的区别,static_cast 、dynamic_cast、const_cast、 reinterpret_cast的使用方法以及区别。
2017-08-04 00:16:12
660
原创 虚析构函数的作用
为什么基类的析构函数最好声明为虚函数?基类的虚函数声明为虚函数有什么作用?为什么将基类的析构函数声明为虚函数就可以很好的避免内存泄漏这一问题呢?
2017-08-03 21:27:47
497
原创 二叉树算法
二叉树的遍历算法1.先序遍历对每一个节点将其看作根节点按照根左右的顺序进行遍历。示例代码void _PreOrderTree(Node* root) //先序遍历二叉树 { if (root != NULL) { cout _data _PreOrderTree(root->left); _PreOrderTree(r
2017-04-08 20:22:51
315
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人