自定义博客皮肤

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

单链表的面试题

void DeleteNotTail(PNode pos);//删除一个无头单链表的非尾节点 void InsertNotHead(PNode pHead, PNode pos, DataType data);//在无头单链表的一个非头节点前插入一个节点 void JosephCircle(PNo...

2018-05-10 00:01:12

阅读数 86

评论数 0

已知集合A和B的元素分别用不含头结点的单链表存储,函数difference()用于求解集合A与B的差集,并将结果保存在集合A的单链表中。例如,若集合A={5,10,20,15,25,30},集合B={

void difference(PNode* LA, PNode LB) { PNode pa = *LA; PNode pre = NULL; PNode pb = LB; PNode p = NULL; while (pa) { ...

2018-05-09 23:57:54

阅读数 84

评论数 0

双向通信管道

我们知道管道有匿名管道和命名管道,但是他们只能用于单向的通信,现在有一种双向管道用来进行双方的通信:sockpair来实现#include <stdio.h> #include <sys/socket.h> #include <string.h>int main...

2017-08-25 14:54:12

阅读数 521

评论数 0

socket编程(TCP多线程客户端服务器)

能够实现一个服务器与多个客户端之间通信 Makefile中引入了pthread库 Makefile.PHONY:all all:server client server:server.c gcc -o $@ $^ -lpthread client:client.c gcc -o...

2017-08-24 17:25:08

阅读数 307

评论数 1

socket编程(TCP多进程客户与服务器)

能够实现一个服务器与多个客户端之间通信 server.c#include <stdio.h> #include <string.h> #include <arpa/inet.h> #include <netinet/in.h> #include &...

2017-08-24 17:21:57

阅读数 560

评论数 0

进程间通信之共享内存

共享内存就是允许两个不相关的进程访问同一个逻辑内存。共享内存是在两个正在运行的进程之间共享和传递数据的一种非常有效的方式。不同进程之间共享的内存通常安排为同一段物理内存。进程可以将同一段共享内存连接到它们自己的地址空间中,所有进程都可以访问共享内存中的地址,就好像它们是由用C语言函数malloc分...

2017-08-15 07:53:10

阅读数 119

评论数 0

进程间通信之信号量

信号量的本质是一种数据操控锁,它本身不具有数据交换的功能,而是通过来控制其他的通信资源来实现进程间通信的,信号主要负责数据的同步与互斥功能。进程请求一个使用信号量来表示的资源时,首先要读取信号量的值来判断资源是否能被使用,若信号量的值大于0,资源可用,等于0,无资源可用,同时进程会进入睡眠状态,直...

2017-08-14 20:37:00

阅读数 116

评论数 0

进程间通信之消息队列

消息队列提供了一种从一个进程向另一个进程发送数据块的方法,每个数据块都被认为是由一个类型的,接收者进程接收的数据块可以有不同的类型。消息队列是基于消息的,管道式基于字节流的,可以用发送消息的方式来避免管道的同步与阻塞问题,消息队列的读取,不一定是先进先出。 消息队列与命名管道有一样的不足,就是每...

2017-08-14 18:02:48

阅读数 97

评论数 0

进程间通信之命名管道

前面所说的pipe我们叫它匿名管道,他只能用于有关系的进程之间的通信,为了实现不同进程之间的通信,有一种管道叫做命名管道Fifo来实现任意两个进程之间的通信。命名管道是一个设备文件,总是按照先进先出的工作方式来进行的,在文件系统中是以文件名的形式存在的。 首先创建命名管道可以有2种方式: 1....

2017-08-14 16:13:17

阅读数 129

评论数 0

进程间通信之匿名管道

我们知道每个进程都有各自 的进程地址空间,一个进程看不到另外一个进程的全局变量,那么要实现进程之间的数据交换,必须要通过内核,首先内核要先开辟缓冲区,进程1先把数据拷贝到内核的缓冲区中,进程2再从缓冲区中把数据拿走,内核提供的这种机制就叫做进程间通信。 管道是一种基本的IPC机制,用于创建管道的...

2017-08-14 15:47:05

阅读数 140

评论数 0

UDP套接字编程

UDP是用户数据报协议,与TCP协议一样,在网络中处理数据包,是一种无连接的传输层协议,具有不可靠性,UDP有不提供数据包分组、组装和不能对数据包进行排序的缺点,也就是说,当报文发送之后,是无法得知其是否安全完整到达的。 基于UDP的客户端服务器: 服务器:#include <stdio...

2017-08-10 14:13:40

阅读数 130

评论数 0

socket编程(TCP单进程客户服务器通信)

服务器#include <stdio.h> #include <stdlib.h> #include <sys/types.h> #include <sys/socket.h> #include <netinet/in.h> #inclu...

2017-08-08 12:50:59

阅读数 167

评论数 0

socket套接字编程预备知识

我们知道“IP+端口号”标识网络通讯中的一个唯一的进程,这里我们说”IP+端口号“就是socket. 介绍一下网络字节序的知识,我们都知道内存中的多字节数据相对于内存地址来说有大端和小端之分,磁盘文件中的多字节数据相对于文件偏移来说也有大端和小端之分,同样网络数据流也有大端和小端之分,发送主机把...

2017-08-08 10:13:42

阅读数 117

评论数 0

求二叉树中两个节点的最近公共祖先

要求考虑以下三种种情况,给出解决方案,并解决: 1:二叉树是搜索二叉树。2: 二叉树每个节点有parent(三叉链) 3:就是普通二叉树。(尽可能实现时间复杂度为O(N)) 针对第一种情况,是一棵二叉搜索树,我们可以根据数据的大小来判断两个节点的位置,如果在根节点的2侧,则根节点为最近公共祖先,...

2017-08-02 22:25:41

阅读数 297

评论数 0

判断一棵树是否是完全二叉树

首先我们要了解什么事完全二叉树。 完全二叉树: 假设一颗二叉树的深度为h,除了第h层以外,其余各层节点的个数全都达到了每层的最大值,即2^(n-1),只有第h层的结点个数小于或者等于2^(h-1),而且节点都连续集中在最左边,这就是完全二叉树,当然当第h层结点达到最大值时,叫做满二叉树,满二叉...

2017-08-02 10:55:04

阅读数 896

评论数 0

判断一个节点是否在一棵二叉树中&&判断一颗二叉树是是否是另一颗树的子树

1.判断一个节点是否在一颗二叉树中 首先判断此节点是不是根节点,是根节点的话就返回表示节点在树中,否则递归根节点的左右子树,继续向下寻找bool _IsNode(Node* node,Node* root) { if (root == NULL) ...

2017-08-02 09:50:42

阅读数 198

评论数 0

已知集合A和B的元素分别用不含头结点的单链表存储,函数difference()用于求解集合A与B的差集,并将结果保存在集合A的单链表中。例如,若集合A={5,10,20,15,25,30},集合B={

void difference(PNode* LA, PNode LB) { PNode pa = *LA; PNode pre = NULL; PNode pb = LB; PNode p = NULL; while (pa) { p...

2017-08-02 09:45:09

阅读数 181

评论数 0

一个数组中有一个数字的次数超过了数组的一半,求出这个字符

首先我们想到的就是排序,排序完成后找到中间的数字即为数组中超过一半的数字,但是后来又想想,数据特别多的话排序就显得力不从心。 本题可以用标志位来标记数据:首先记录一个数据,继续遍历下一个数据,如果数据以第一个相同,就将标志位加一,继续下一个数据,要是不相同就将标志位减一,如果标志位为0.重新记录...

2017-08-02 09:38:21

阅读数 138

评论数 0

给定一个整数N,那么N的阶乘N!末尾有多少个零呢?

我们知道最小的两个数相乘能出来0的就是2和5了,那么对于所有整数来说,能被2整除的数要多于能被5整除的数,所以这道题的解题思路就是:判断从1-N这些数中一共有包含的5的个数。 代码如下:int NumZero(int n) { int count = 0; for (int i ...

2017-08-02 09:11:00

阅读数 417

评论数 0

一个m*n的矩阵,从左到右从上到下都是递增的,给一个数x,判断x是否在矩阵中。要求效率尽可能的高

我们可以这样入手,比如给一个3*3的二维数组,从每一行的最大值开始比较: 1.如果X大于a[0][2],第一行中的数据肯定都比x小,所以继续跟下一行的a[1][2]比较 2.如果X小于a[0][2],第3列中的数据肯定都比x大,所以继续跟上一列的 a[0][1]比较 3.循环条件为行数&g...

2017-08-02 09:03:34

阅读数 214

评论数 0

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