自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(58)
  • 收藏
  • 关注

原创 畅所语聊

这是一个实现多人在线聊天的小项目思想:首先这个项目分为三个模块(1.登录和注册、2.用户发送消息,服务端接收消息,并且放入数据池中、3.将数据转发给每个用户)1.登录和注册 (1)注册:将自己的所有信息使用tcp来进行发送给服务器,服务器接收到这个信息之后,将用户信息保存在一个User容器中,然后返回给用户一个用来登陆的id (2)登录:输入id 和密码,然后将...

2019-03-28 10:42:53 380

原创 文本相似度

这是一个计算两篇文章的相似度的小工具这个小工具的主要原理是基于词频的文本相似度的计算,主要的步骤分为下面几步首先下载一个存放停用词的文本文件,然后将这些停用词存放在set中(因为停用词是一些不能表达文章意思的词汇) 利用jieba对两篇文章进行分词,并且将分好的这些词和对应的数目保存在map中(其中如果遇到停用词的话,就将不要将这个词放入map中)(为什么要进行分词,因为这个文本相似度的...

2019-03-11 23:02:52 442

原创 linux下制作一个简易shell

做一个简单的shell   1.首先输入一个命令,并且用一个字符数组来保存这个命令   2.按照空格解析这个字符串(如果是用空格分割开的命令的话(ls  -l),将空格前后字符串分开保存在字符串数组中)   3.创建一个子进程(fork()),然后替换子进程(execvp),让父进程等待子进程的退出然后释放掉子进程的资源(wait)。#include<stdio.h>...

2018-11-12 23:52:10 1003

原创 进程控制

进程创建      fork()               1.以父进程为模板赋值创建一个人子进程,父子进程代码共享,数据独有。(写时拷贝技术)               2.fork的返回值,父进程返回子进程的pid,子进程返回0               3.父子进程谁先执行是不一定的,这取决于CPU的调度。      vfork()              1...

2018-11-12 23:43:04 196

原创 进程的基本概念

1.什么是进程?      1. 进程就是运行起来的程序,程序运行起来需要被加载到内存中。(这是站在用户的角度看待进程的)      2. 进程就是操作系统的描述,这个描述叫PCB(进程控制块),Linux下PCB有自己的名字叫task_struct.而操作系统就是使用task_struct结构体描述进程,使用双向链表来将这些结构体组织起来进行管理。task_struct结构体的内容分类...

2018-11-08 23:14:34 19278

原创 类中的6个默认成员函数

1.构造函数什么是构造函数?          构造函数是一个特殊的函数,名字与类名相同,创建类类型的对象的时候由编译器自动调用,保证每个数据成员都有一个合适的初始值,并且在对象的生命周期内只能调用一次。构造函数的特性         1.函数名与类名相同         2.没有返回值(就是在类名的前面不加任何的类型,void都不可以)         3.构造函数可...

2018-11-07 09:06:51 1282

原创 类和对象的初步了解

1、类的定义:类有点类似于C语言中的结构体,C语言中的结构体中只能定义变量而不能定义函数,但是C++中的结构体可以定义函数。而类相当于结构体一样,在一个作用域中可以定义函数和变量。用下面的例子来了解一下类的定义class classname{ //里面存放的是成员函数和成员变量}; //不要忘记分号接下来我们分析一下类的定义:class 为定义类的关键字,clas...

2018-10-31 09:14:27 215

原创 C++入门的基本操作

1.命名空间在c/c++中,变量、函数和后面要学的类都是大量的存在,这些变量、函数和类的名称将都存在于全局作用域中,可能会会导致很多冲突,使用命名空间的目的是对标识符的名称进行本地化,以避免命名冲突或名字污染,namespace关键字的出现就是为了针对这种问题。而定义一个命名空间需要用到namespace关键字,后面跟命名空间的名字,然后接一对{}即可,{}中即为命名空间的成员。看下面...

2018-10-27 11:29:26 816

原创 二叉搜索树的基本操作和简单的应用

二叉搜索树什么是二叉搜索树:二叉搜索树又称之为二叉排序树,它不为空树时,它左子树上所有的元素都小于根节点的元素,而根节点右子树上所有的元素都大于根节点的元素。二叉搜索树的基本操作:二叉树的查找:思路  :非递归查找:         1.如果二叉树的根节点为空的话,直接返回0。          2.如果二叉树的该根节点不为空的话,循环下面的操作:       ...

2018-10-06 16:24:30 3530

原创 栈和队列的面试题

1.实现一个栈,要求实现出栈、入栈的操作,并且返回最小值的时间为O(1)思路:方法一:用两个站来实现,一个栈来实现入栈、出栈的操作,另一个栈用来记录最小值,每向栈1中入一个元素都与栈2中的栈顶元素比较,如果小于栈2的栈顶元素的话,将该元素放入栈1,栈2中,如果大于栈2中的元素的话,只向栈1中放入该元素,直到数组的元素全部放入栈1为止。////实现一个栈,要求实现入栈和出栈,并且在...

2018-10-01 16:11:09 286

原创 linux常用命令以及gcc、gdb、vim的安装和配置

1.      linux是一个类unix操作系统      vmware--虚拟出一个硬件环境用于安装一个操作系统      虚拟机--在vmware中的这个虚拟的这个硬件环境/安装的这个操作系统      xshell功能:远程连接到虚拟机/服务器上堆虚拟机/服务器惊醒远程操作      xshell       winscp 用于自己主机和服务器/虚拟机之间的文件传输    ...

2018-09-24 19:00:24 577

原创 数据结构排序算法总结

Sort.h#pragma once#include<stdio.h>#include<stdlib.h>#include<assert.h>typedef int DataType;typedef int (*Pcompare)(DataType left, DataType right);typedef struct Heap{...

2018-09-24 18:54:40 389

原创 堆及堆的应用

Heap.h#ifndef _HEAP_H_#define _HEAP_H_typedef int DataType;#include<assert.h>#include<stdlib.h>typedef int (*Pcompare)(DataType left, DataType right);typedef struct Heap{ Da...

2018-09-11 20:24:15 286

原创 二叉树的基本操作与应用

1.二叉树的基本操作:进行基本操作要调用的函数:#include"BTree.h"//申请一个节点BTreeNode *BuyBTreeNode(DataType data){ BTreeNode *NewNode = (BTreeNode *)malloc(sizeof(BTreeNode)); if(NULL == NewNode) { assert(0); }...

2018-09-11 20:13:57 1204 1

原创 三种迷宫小算法

1.简单迷宫(只有一条通路或者是有几条通路(不带环))SimpleMaze.h#ifndef AAA#define AAA#include<stdio.h>#include<assert.h>#define NUMBER 20#define ROW 6#define COL 6typedef int DataType;//地图typedef...

2018-09-11 20:04:12 763

原创 简单的单位数四则计算(带括号)

Count.h#ifndef AAA#define AAA#include<stdlib.h>#include<assert.h>#include<stdio.h>#define NUMBER 20typedef int DataType;typedef struct Stack{ char array[NUMBER]; int ...

2018-08-30 21:44:52 342

原创 括号匹配问题

Match.h#ifndef AAA#define AAA#include<assert.h>#include<stdio.h>typedef char DataType;#define NUMBER 20typedef struct Stack{ DataType a[NUMBER]; int count;}Stack;void Mat...

2018-08-30 21:38:09 234

原创 栈和队列的基本操作

Satck.h#ifndef _SAQ_H#define _SAQ_H_#include<stdio.h>#include<stdlib.h>#include<assert.h>#define NUMBER 20typedef int DataType;typedef struct Stack{ DataType array[NUM...

2018-08-30 21:31:56 486

原创 链表的基本操作及链表面试题

LinkList.h#ifndef _LINKLIST_H_#define _LINKLIST_H_#include<stdio.h>#include<stdlib.h>#include<assert.h>typedef int DataType;typedef struct Node{ DataType data; struct ...

2018-08-30 21:05:30 745

原创 带头节点的双向循环链表的基本操作

双向循环链表:双向循环链表中每一个节点都有一个直接的前驱和一个直接的后继双向循环链表中的节点有两个指针域和一个存放数据的地方,两个指针域一个存放下一个节点的地址,一个存放前一个指针的地址下面是双向循环链表的基本操作:CircularList.h#ifndef _LINKLIST_H_#define _LINKLIST_H_#include<stdlib.h...

2018-08-30 20:55:46 13526 1

原创 带头节点的单链表的基本操作

List.h#ifndef AAA#define AAA#include<stdio.h>#include<stdlib.h>#include<assert.h>typedef int DataType;typedef struct Node{ struct Node *next; DataType data;}pNode, *p...

2018-08-30 20:50:04 1824 2

原创 Linux根目录下的文件作用

linux根目录下各文件夹的作用 /bin 二进制可执行命令   /dev 设备特殊文件   /etc 系统管理和配置文件 /etc/rc.d 启动的配置文件和脚本   /home 用户主目录的基点,比如用户user的主目录就是/home/user,可以用~user表示   /lib 标准程序设计库,又叫动态链接共享库,作用类似windows里的.dll文件   /sbin 系统管理命令,这里...

2018-06-19 14:30:46 339

原创 注释转换

这次主要讲的是把C语言的注释(/* ····  */)转换为c++的注释(//)根据下面的图来分析情况位置情况遇到/*时转到C语言注释的情况,遇到//时转到c++注释的情况,遇到EOF时转换为结束状态。C语言状态遇到*/转到未知状态。c++状态遇到\n时转到未知状态,遇到EOF时转到结束状态。转换时要注意以下几个问题:// 1.一般情况int num = 0;/* int i = 0; */// ...

2018-06-18 15:23:12 158

原创 顺序表的简单操作

这次对顺序表进行一些简单的操作,比如插入(头插法,尾插法)删除(头删法,尾删法)查找 ,排序,打印进一步了解顺序表。SeqList.h#ifndef _AAA_#define AAA #include<stdio.h>#include<stdlib.h>#include<assert.h>#include<string.h>#define...

2018-06-18 14:10:18 193

原创 一些自定义类型的介绍

1.结构体结构是一些值的集合,这些值称为成员变量。结构的每个成员可以是不同类型的变量。结构的声明:struct person{ char name[32]; char sex[4]; int age;};这样你对结构体是不是更加了解了呢?(2).结构的成员结构的成员可以是标量、数组、指针、甚至是其他结构体。struct student {    struct perso...

2018-06-03 20:45:22 225

原创 通讯录

1.用链表的形式模仿手机的通讯录,实现实现通讯录的一些基本功能, 比如添加、删除、查找、排序、修改等操作。#define _CRT_SECURE_NO_WARNINGS 1#include<stdio.h>#include<stdlib.h>#include<string.h>#include<assert.h>//********...

2018-06-03 12:41:05 350

原创 有文件存储的通讯录

1.对通讯录加入可以把联系人存入文件中,也可以从文件中读取联系人的信息。#define _CRT_SECURE_NO_WARNINGS 1#include<stdio.h>#include<stdlib.h>#include<string.h>#include<assert.h>//**********联系人的信息**********...

2018-06-03 12:25:00 407

原创 模拟实现strncpy等函数的功能

1.strncpy函数实现strncpy是在strcpy函数的基础上,把a中一串字符的任意个字符,拷入字符串数组b中,要拷贝的字符由自己控制,而不是将a中的字符都拷入b中,所以传参时多传一个你要拷贝的字节个数,而且在拷贝完成之后,如果你没有指定字符数组b的大小,记得在数组b中加入'\0'做结尾。#include<stdio.h>#include<stdlib.h>ch...

2018-05-26 15:04:05 973

原创 实现一个通用的冒泡排序

1.实现一个通用的冒泡排序。#include<stdio.h>#include<stdlib.h>#include<string.h>struct Ass//结构体{ int age; char name[10]; double grade; char c;};void Swap(void *p, void *q, int j)//交换...

2018-05-13 22:44:40 345

原创 用三种方法实现strlen的功能

1.用遍历的方法实现。(1).从首元素开始,遍历这个字符串只有不是'\0'就加一;#include<stdio.h>#include<stdlib.h>int My_strlen(char* arr){ int i = 0; while(*arr)//遍历整个字符串,直到'\0'结束 { i++; arr++; } return i;}int ...

2018-05-11 18:09:29 1556

原创 了解指针数组...的定义及使用

1.指针数组 什么是指针数组呢?比如:int *arr[10];int *a[4];int **arr[10];以上这些都是指针数组,为什么 呢?首先 拿第一个为例,arr先与[10]结合成为一个数组,然后这个数组里存着10个元素,每个元素的类型为int*;第二个也一样。第三个的意思是arr与[10]结合成为一个数组,数组的元素类型为int**。总的来说就是存放指针的数组叫指针数组。它怎么用呢...

2018-05-06 23:12:11 742

原创 实现strcpy,实现strcat, 实现strstr. .....

1.实现strcpy#include<stdio.h>#include<stdlib.h>#include<assert.h>char* My_strcpy(char *n_a, const char *n_b){ char *p = n_a; assert(n_a); assert(n_b); while(*n_a = *n_b) {...

2018-05-06 12:33:55 180

原创 喝汽水问题, 1瓶汽水1元,2个空瓶可以换一瓶汽水,给20元,可以喝多少瓶汽水

1.喝汽水问题, 1瓶汽水1元,2个空瓶可以换一瓶汽水,给20元,可以喝多少瓶汽水思路:首先进行如图所示的第一列操作,当为0个瓶子时,开始第二列的计算(用空瓶子数来换汽水)重复上面的操作,直到只有一个空瓶时返回0。int A(int n, int y){ if(n==0)//汽水喝完,开始用空瓶子来换汽水 { if(y <= 1) { return 0; } el...

2018-05-06 12:12:48 1925

原创 递归小程序

1.用递归和非递归实现求第n个斐波那契数非递归实现1.创建一个一维数组,并定义第一个和第二个元素为1,。2.然后其余元素为他之前的两个元素之和,从第三个元素开始一直计算到第n个数3.如果n<3,那么直接返回1,当n>=3时,返回数组下标为n-1的元素#include<stdio.h>#define N 100int ASD(int *arr, int x){ in...

2018-05-05 17:30:45 956

原创 冒泡排序排多个字符串

1.冒泡排序排多个字符串思路:1.使用一个二维数组来存放字符串,一行代表一个字符串2.对一行的字符串进行冒泡排序,排完这一行之后对下一行排序。#include<stdio.h>#include<stdlib.h>#include<string.h>#define S 3 //行数#define N 10 //列数Exchage(ch...

2018-05-05 13:48:08 470

原创 可变参数列表的小程序

1.使用可变参数,实现函数,求函数参数的最大值#include<stdio.h>#include<stdarg.h>#include<stdlib.h>int Max(int n,...){ va_list arg; int i = 0; int max = 0; int a = 0; va_start(arg, n); max = va_ar...

2018-05-05 13:28:24 182

原创 可变参数列表

首先通过一个例子来了解可变列表参数一个函数可以求出任意个参数的平均值:#include<stdio.h>#include<stdlib.h>#include<stdarg.h>int average(int n,...){ va_list arg; int i = 0; int sum = 0; va_start(arg, n); for(i...

2018-05-05 11:11:09 206

原创 栈帧总结

栈帧总结用下面这个简单的C语言程序来讲解函数栈帧#include<stdio.h>int Add(int n_a, int n_b){ int z = n_a + n_b; return z;}int main(){ int a = 0; int b = 0; int c = Add(a, b); printf("%d", c); return 0;}在...

2018-04-22 20:23:13 169

原创 实现一个函数,可以左旋字符串中的n个字符

1.实现一个函数,可以左旋字符串中的n个字符代码思路:先将左旋的字符串倒置,然后倒置它之后的字符串,最后再将整个字符串都倒置,这就致我们想要的结果了。比如:旋转2个字符           ASDFGH倒置要旋转的字符串为      SADFGH将它后面的字符串倒置为   SAHGFD将整个字符串倒置为          DFGHAS#include<stdio.h>#include...

2018-04-19 20:22:50 207

原创 将一个数组的所有奇数位放在所有的偶数位之前

1.将一个数组的所有奇数位放在所有的偶数位之前(1)代码思路:首先判断这个数组的元素个数,如果是奇数个,那么这个数组的第一位保持不变  如果是偶数个,那么它的第一位和最后一位保持不变。然后先从i=1开始用个for循环交换相邻两个元素的数字(2、3位交换,4、5位交换....)比如开始是 1 2 3 4 5 6 7 8 9交换后为    1 3 2 5 4 7 6 9 8然后再从i=3开始再次交换,...

2018-04-14 15:12:11 1275

空空如也

空空如也

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

TA关注的人

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