关闭

求两个单链表的差集和并集

题目:- 已知集合A和B的元素分别用不含头结点的单链表存储,函数difference()用于求解集合A与B的差集,并将结果保存在集合A的单链表中。例如,若集合A={5,10,20,15,25,30},集合B={5,15,35,25},完成计算后A={10,20,30}。 思路:指针的指针pa遍历链表A,指针pb遍历链表B,当节点的值相等,删除,提前将删除位置的下一个节点保存,然后 继续遍历...
阅读(36) 评论(0)

判断一个栈的弹出序列是否为合法序列

题目: 输出两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否为该栈的弹出顺序,假设压入栈的苏偶偶数字均不相等.例如序列1,2,3,4,5是某栈的压栈序列.序列4,5,3,2,1是该压栈序列的一个弹出序列,但4,3,5,1,2就不可能是该压栈序列的弹出序列. 思路: 验证:#include #include #include...
阅读(19) 评论(0)

判断一颗树是不是完全二叉树

首先我们要明白完全二叉树的含义: 完全二叉树: 若设二叉树的深度为h,除第 h 层外,其它各层 (1~h-1) 的结点数都达到最大个数,第 h 层所有的结点都连续集中在最左 边,这就是完全二叉树 我们先来回顾下二叉树按层遍历,先将根节点进队列,然后判断每次这个队列是否为空,不为空,每次取队头的数据然后pop,最后再递归走其子问题,判断左子树是否为空,不为空直接入队,再判断右子树是否为空...
阅读(18) 评论(0)

刷题--二叉树的镜像

题目:请完成一个函数,输入一个二叉树,该函数输出它的镜像 那么什么是二叉树的镜像呢?我们其实可以从生活中得到启示,每个人早上起来都有找镜子的习惯,这样我们就会很容易想明白二叉树的镜像了, 如图两颗互为镜像的二叉树. 观察这颗二叉树我们会发现,这两颗二叉树的根节点相同,但是它们的左右两个子节点交换了位置. 步骤: 1:首先交换节点2和节点6 2:第二步:交换将节点1和节点3作为整体然后...
阅读(19) 评论(0)

socket--多进程,多线程服务器

一:概念: 我们知道IP地址是标志网络中不用主机的IP地址,而端口号就是同一台主机上标志不同进程的地址,IP地址和端口号标志网络中的唯一地址.(又称socket) 在TCP协议中,建⽴立连接的两个进程各⾃自有⼀一个socket来标识,那么这两个组成 的socket就唯⼀一标识⼀一个连接。socket本⾝身有“插座”的意思,因此⽤用来描述网络连接的一一 对应关系. 二:通信中的大端小端的问题如何...
阅读(369) 评论(2)

gdb调试多线程

一:调试 我们知道在Windows下我们常用 F5调到断点处 ,F9设置断点或者取消断点,F 10开始调试或单步执行 F11进入函数内部 F7编译 Ctrl+F10调到函数内部 当然有时我们也会使用调试窗口或者查看栈帧来进行调试. Linux下调试我们通常使用gdb(代码调试工具) 注意在写Makefile文件时,要加上-g 1:开始调试gdb filename 2:l 1其...
阅读(210) 评论(0)

统计第一个只出现两次的字符

方法一:在一个一维数组里面查询: 最直接的方法是从头到尾遍历这个字符数组的字符,当访问这个字符时,拿这个字符和后面的每个字符匹配,如果下次又找到一个字符再次出现,就表明是出现两次的字符,如果字符与n个字符,每个字符可能都会与后面的比较,这种思路的时间复杂度较高,O(N^2) 方法二:map加上排序; 思路是:将字符作为,键值,将出现的次数作为实值,那么如歌保证第一个出现的次数是两次我们需要加...
阅读(185) 评论(0)

一个fork的面试题

题目: 请问下面的程序一共输出多少个”-“#include #inlcude int main() { int i; for(i =0;i<2;i++) { fork(); printf("-"); } return 0; }可能开始的时候大家都以为会输出6个”-“,但是结果输出了8个”-“. 要弄明白这个题,还是先从fork()调用开始...
阅读(47) 评论(0)

判断链表是否带环?若带环求环的长度?求环的入口点?

一:判断链表是否带环 方法是快慢指针: 开始的时候,两个指针都指向开头,然后让快指针走两步,而慢指针每次走一步,当他们在某个点相遇则表明,这个链表带环,否则继续遍历这个链表bool IsCircle(ListNode*phead) { assert(phead); ListNode*fast =phead; ListNode*slow =phead; while(...
阅读(44) 评论(0)

再识智能指针

背景 为什么需要智能指针: 如果在程序中 这时我们希望有一个类来帮我们完成资源的管理,智能指针就出现了. 什么是智能指针? 分三步去理解 a:第一步:RTLL: 又称资源分配即初始化,定义一个类来封装资源的分配和释放,在构造函数完成资源的分配和初始化,在析构函数完成资源的清理,可以保证资源的正确初始化和释放. 简单点说就是在初始化时获取系统的资源,在析构时,释放资源.b:第二步:...
阅读(1032) 评论(4)

反转链表和查找倒数第K个节点

一:链表的逆置(反转链表) 题目:定义一个函数,输入一个链表的头结点,反转该链表并输出反转后的头结点: 节点的结构struct ListNode { ListNode(const int& val) :_val(val) ,next(NULL) {} int _val; ListNode*next; };这里面我们需要三个指针分别是cur,用来顺序遍...
阅读(73) 评论(0)

如何定义一个只在栈/堆上生成的对象

一:首先复习下内存结构; 1:栈(stack):–由编译器自动分配释放,存放函数参数值,局部变量值等. 2:堆(heap):一般是由程序员分配释放,若程序不释放,程序结束时可能由操作系统回收 3:全局区(静态区):主要存放全局变量和静态变量,分为已初始化的全局变量和静态变量区,data区,未初始化的全局变量和静态变量区(bbs区); 4:常量区:各种常量字符 5:代码段:存放函数二进制代码...
阅读(219) 评论(0)

TCP的四种定时器

在TCP协议中有的时候需要定期或者按照某个算法对某个事件进行触发,那么这个时候,TCP协议是使用定时器进行实现的。在TCP中,会有四种定时器: (1)重传定时器 (2)坚持定时器 (3)保活定时器 (4) 时间等待计时器 这四个定时器都有各自的具体作用。 一:重传定时器 重传定时器:为了控制丢失的报文段或丢弃的报文段,也就是对报文段确认的等待时间。当TCP发送报文段时,就创建这个特定报...
阅读(49) 评论(0)

TCP报文段中的URG和PSH

一:TCP报文段的首部格式 首先明白TCP虽然是面向字节流的,但TCP传输的数据单元确实报文段,一个TCP报文段分为首部和数据两部分,而TCP的全部功能都体现在它首部中的个字段的作用,因此只有弄清楚TCP首部个字段的作用才能掌握TCP的工作原理. TCP报文段首部的前20个字节是固定的,后面有4n字节是根据需要而增加的选项,,因此TCP首部的最小长度是20字节 二:首部固定部分各字段的意义:(...
阅读(130) 评论(0)

端口与服务

一:概念 在网络技术中,端口包括逻辑端口和物理端口两种类型, 物理端口是指物理存在的端口如:集线器,交换机,路由器上用于连接其他网络设备的接口. 逻辑端口:是指逻辑意义上用于区分服务的端口,如TCP/IP协议中的服务端口, 端口号的范围从0到65535,比如用于浏览网页服务的80端口,用于FTP服务的21端口等。由于物理端口和逻辑端口数量较多,为了对端口进行区分,将每个端口进行了编号,这就是端...
阅读(635) 评论(0)

路由表的生成算法

一:几个概念 1:路由器: 是连接因特网中的个局域网,广域网的设备,它会根据信道的情况自动选择和设定路由,以最佳路径,按前后顺序发送信号.路由器又称网关设备是用于连接多个逻辑上分开的网络,所谓逻辑网络是代表一个单独的网络或者一个子网,当数据从一个子网传输到另一个子网时,可通过路由器的路由功能来完成.因此,路由器具有潘丹网络地址和选择IP路径的功能,它能在多个网络互联的环境中,简历灵活的连接,可用...
阅读(300) 评论(0)

NAT技术及其应用

一:概念: 共有IP:也叫全局地址,是指合法IP地址,它是由NIT(网络信息中心)或者ISP(网络服务提供商)分配的地址,对外代表一个或多个内部局部地址,是全球统一的可寻址的地址. 私有IP地址:也就内部地址,属于非注册地址,专门为组织机构内部使用,因特网分配编写委员会,保留了3块IP地址做为私有IP地址: 10.0.0—-10.255.255.255 172.16.0.0—172.16.2...
阅读(75) 评论(0)

浅谈ARP

一:ARP的原理: 我们知道以太网设备比如网卡都有自己全球唯一的MAC地址,它们是以MAC地址阿里传输以太网数据包的,但是它们却识别不了IP包中的IP地址,所以我们在以太网中进行IP通信的时候就需要一个协议来建立IP地址与MAC地址的对应关系,以使数据包能发到一个确定的地方去,这就是ARP(地址解析协议)1:ARP数据报格式 在网络通讯时,源主机的应用程序知道目的主机的IP地址和端口号,却不知...
阅读(187) 评论(0)

CRC校验

一:什么是CRC? CRC即循环冗余校验码:是数据通信领域中最常用的一种差错校验码,器特征是信息字段和校验字段的长度可以任意选定.循环冗余检查(CRC)是一种数据传输检错功能,对数据进行多项式计算,并将结果附在帧的后面,接受设备也执行类似的算法,以保证数据传输的正确性和完整性.二:常见的校验方法:1:奇偶校验 设置奇偶校验位,所谓的奇偶校验就是在发送的每一个字节后加上一位,是的每个字节中的1的个...
阅读(56) 评论(0)

进程间通信--信号量

信号量的本质 是一种数据操作锁,它本身不具有数据交换的功能,而是通过控制其他的通信资源(文件,外部设备)来实现进程间通信,它本身只是一种外部资源的标志,信号量在此过程中负责数据操作的互斥,同步等功能. 一:为什么要使用信号量 为了防止因多个程序同时访问一个共享资源而引发的一系列问题,我们需要一种方法,它可以通过生成并使用令牌来授权,在任意一时刻只能有一个执行线程访问代码的临界区域.临界区域是指...
阅读(215) 评论(0)
103条 共6页1 2 3 4 5 ... 下一页 尾页
    个人资料
    • 访问:20369次
    • 积分:1203
    • 等级:
    • 排名:千里之外
    • 原创:102篇
    • 转载:1篇
    • 译文:0篇
    • 评论:19条
    博客专栏
    c/c++

    文章:38篇

    阅读:7696
    文章分类
    友情链接
    http://write.blog.csdn.net/postlist
    友情链接
    http://write.blog.csdn.net/postedit
    最新评论