自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

long0624的博客

hello world

  • 博客(36)
  • 收藏
  • 关注

原创 链表带环问题

1、判断链表是否带环 解析:这里可以用到追及的思维,设置两个快慢指针同时从头结点出发。如果链表带环,则快指针一定会追上满指针。PNode HasCircle(PNode pHead)// 判断单链表是否带环 { //快慢指针 PNode pFast = pHead; PNode pSlow = pHead; while (pFast &&amp...

2018-08-21 20:44:57 200

原创 常见链表面试题

链表节点的定义typedef int DataType;typedef struct SlistNode{ DataType data; struct SlistNode *pNext;}Slist, *PNode;1. 逆序打印带头结点的单链表void PrintListFromTail2Head(PNode pHead)//逆序打印链表{ /...

2018-08-19 19:39:11 177

原创 单链表基本操作——头插头删、尾插尾删、任意位置增加删除节点、查找元素、打印、销毁

#pragma once#include<stdio.h>#include<stdlib.h>#include<assert.h>typedef int DataType;typedef struct SlistNode{ DataType data; struct SlistNode *pNext;}Slist, *PNod...

2018-08-07 19:19:09 1479

原创 鸡尾酒排序和冒泡优化

#include<iostream>using namespace std;void Print(int(&ra)[10])//打印函数{ int i = 0; for (i; i < 10; ++i){ cout << ra[i] << " "; }}void Swap(int* x, int...

2018-08-03 13:26:20 215

原创 结构体内存对齐

结构体为什么要内存对齐? 大部分的参考资料都是如是说的:1、平台原因(移植原因): 不是所有的硬件平台都能访问任意地址上的任意数据的;某些硬件平台只能在某些地址处取某些特定类型的数据,否则抛出硬件异常。2、性能原因:数据结构(尤其是栈)应该尽可能地在自然边界上对齐。 原因在于,为了访问未对齐的内存,处理器需要作两次内存访问;而对齐的内存访问仅需要一次访问。结构体内存对其规则:...

2018-08-02 19:07:46 120

原创 给大家安利一个简单的vim小技能

对于刚上手vim,没有安装各种插件的小伙伴来说没有缩行简直不要太痛苦。在vim上写完代码后,如果你觉得你代码看起来不是很整齐美观。这里给大家安利一个小技能在指令模式下输入:gg=G (敲重点!!!!小鸡鸡等于大鸡) 还是很好记的哈哈哈哈哈 不过建议大家还是尽量不要用!!!这个指令也不是万能的!整齐的代码还是要靠我们自己写出来 ...

2018-07-31 17:24:19 206

原创 静态顺序表

顺序表是一个线性表,它是由一段连续的存储单元来依次存储数据元素的线性结构。 下面是代码和一些难点解释.h文件#pragma once#ifndef _Seqlist_H_#define _Seqlist_H_#include <tchar.h>#define MAX 10typedef int Typedata;typedef struct Seqlis...

2018-07-30 21:02:46 139

原创 C++__继承

什么是继承?  继承机制是提高代码复用率的最重要手段,它可以在保持原有类的基础上进行扩展,增加功能。这样产生的类叫派生类(也叫子类)   取个例子:例如手机的更新换代 怎么使用继承?...

2018-05-18 17:26:15 123

原创 类和对象

this指针构造函数析构函数运算符重载友元函数 编译器又是如何识别类呢? 1)首先识别类的类名  2)识别类的成员变量 3)识别类的成员函数并对类的成员函数进行修改(将当前对象的地址(this指针)传给函数)this指针this指针的特性1)this指针的类型:类类型* const2)this指针不是对象的一部分,不影响sizeof的结果3)其作用域在非静...

2018-05-04 14:57:46 173

原创 模拟String类

#include<string.h>#include<iostream>using namespace std;//普通版class String{public: String() :_str(new char[1]) { _str = '\0'; } String(char* str = ""...

2018-05-04 12:52:16 104

原创 引用

引用不是定义一个新的变量,而是给已存的变量起一个别名,编译器不会给引用变量开辟内存空间,它和引用变量共用同一块内存空间。引用在定义时必须要初始化。  类型& 引用变量名 = 已定义变量名(类型必须和已定义的变量同种类型)         一个变量可以有多个引用变量名,引用变量名只能在引用的时候引用一次,再不能引用其他实体。  常引用      由上图可见const修饰变量a时,用int&定

2018-05-03 17:58:07 178

原创 求一个函数的运行时间

#include <iostream>#include <ctime>using namespace std;clock_t start;clock_t End;void Fun(){ for (int i = 0; i < 10000; i++) for (int j = 0; j = 10000; j++) ;}...

2018-05-02 18:43:53 293 1

原创 命名空间

  在C++中,名称可以是变量、函数、结构、枚举、类以及类的结构成员。随着项目的增大,名称相互冲突的可能性将增加。例如,两个库都定义了名为List、Tree、和Node,但是定义的方式不一样。用户可能使用一个库的List用另一个库的Tree。这种冲突被称为名称空间问题。为避免这种冲突,出现了namespace关键字   定义: namespace N1{ int a; in...

2018-04-24 21:32:58 107

原创 函数重载

  函数重载是函数的一种特殊情况,c++允许在同一作用域中声明几个功能类似的函数 构成函数重载的条件是:    1、作用域必须相同    2、函数名必须相同    3、参数列表不同(参**数个数不同,参数类型不同,参数类型次序不同) 返回值可同或不同    (注:但是只有返回值不同其他全都相同不能构成函数重载)     可以看到只有返回值不同时不能构成函数重载 调用函数时必须...

2018-04-24 18:01:48 159

原创 缺省参数

C语言中,函数没有指定参数列表时,默认可以接收任意多个参数。而C++中,因为严格的参数类型检测,没有参数列表的函数默认为void,不接收任何参数。   缺省参数是在声明或定义函数时为函数的参数指定一个默认值。(相当于备胎哈哈哈)在调用函数时,如果有实参就调用指定的实参,没有指定的实参那么就采用该默认值。下面上实例      有指定实参   缺省参数又可以分为全缺省参数和半缺省参数...

2018-04-24 16:45:30 1717

原创 编写函数 process_create(pid_t* pid, void* func, void* arg), func回调函数就是子进程执行的入口函数, arg是传递给func回调函数的参数.

#include<stdio.h>#include<stdlib.h>#inlude<unistd.h>int process_create(int(*func)(),const char *file,char *argv[]){ int ret = 0; pid_t pid = fork(); if(pid == -1){ ...

2018-04-20 17:37:23 236

原创 自主实现简单的shell

#include<stdio.h>#include<unistd.h>#include<stdlib.h>#include<sys/wait.h>char *argv[8];int argc = 0;void do_shell(){ pid_t pid; if((pid == fork()) == -1){ ...

2018-04-20 16:53:56 127

原创 模拟实现孤儿进程

什么是孤儿进程  孤儿进程:一个父进程退出,而它的一个或多个子进程还在运行,那么那些子进程将成为孤儿进程。孤儿进程将被init进程(进程号为1)所收养,并由init进程对它们完成状态收集工作。   模拟实现...

2018-04-13 17:24:47 226

原创 模拟实现僵尸进程

什么是僵尸进程(zimbie)?     当进程退出并且父进程没有读取到子进程退出返回的代码时就会产生僵尸进程。一个进程在调用exit命令结束自己的生命的时候,其实它并没有真正的销毁, 而是留下一个称为僵尸进程(Zombie)的数据结构(系统调用exit,它的作用是 使进程退出,但也仅仅限于将一个正常的进程变成一个僵尸进程,并不能将其完全销毁)以终止状态保存在进程表中。模拟实现僵尸进...

2018-04-13 17:15:35 500

原创 task_struct结构体,理解其中各个字段的含义

什么是task_struct?     1.Linux内核通过一个被称为进程描述符的task_struct结构体来管理进程,这个结构体包含了一个进程所需的所有信息。 它定义在linux-2.6.38.8/include/linux/sched.h文件中 task_struct都可能包含哪些成员信息?   1.进程状态,记录进程在等待,运行,或死锁   2.调度信息,由哪个调度函数...

2018-04-11 18:01:41 427

原创 进程的调度算法

什么是调度?  大家都知道操作系统管理了系统的有限资源,当有多个进程(或多个进程发出的请求)要使用这些资源时,因为资源的有限性,必须按照一定的原则选择进程(请求)来占用资源,这就是调度。简单来说调度就是一种资源分配。   而调度算法是根据系统的资源分配策略所规定的资源分配算法。目前存在的多种调度算法中,有的算法适用于作业调度,有的算法适用于进程调度;但也有些调度算法既可以用于作业调度,也...

2018-04-11 17:26:28 282

转载 Markdown编辑器简单指南

欢迎使用Markdown编辑器写博客本Markdown编辑器使用StackEdit修改而来,用它写博客,将会带来全新的体验哦:Markdown和扩展Markdown简洁的语法代码块高亮图片链接和图片上传LaTex数学公式UML序列图和流程图离线写博客导入导出Markdown文件丰富的快捷键快捷键加粗 Ctrl + B 斜体 Ctrl + I...

2018-04-11 16:51:42 91

原创 makefile完成进度条

Makfile文件Makefile

2018-04-01 13:52:59 237

原创 Linux开发工具

一、除了vim, 还有哪些常用的编辑器1.eclipse  eclipse 前身是IBM的Visual Age。   四大优点:   1)从编写、查错、编译、帮助等等各方面为Java语言贴身定做     2)可无限扩展的强大插件功能  3)众多公司、厂商、组织的鼎立支持   4)开放,自由,免费  一些缺点:   1)在外观设计功能方面非常欠缺,比如在应用程序的GUI界面设计、“所见即所得”的WE...

2018-03-30 15:35:35 273

原创 Linux指令

一、Linux中的基本操作指令                    查看目录    ls          查看路径   pwd          改变路径   cd          创建文件   touch          创建目录   mkdir                   sort  进行排序             -t  分裂符号             -k  排序的列 ...

2018-03-30 14:52:44 127

原创 对指针数组 数组指针 函数指针 函数指针数组 指向函数指针数组的指针的理解

1.指针数组指针数组本质上是数组,例如int *arr[4] ,arr是先跟[ ]结合再跟结合,所以其是一个指针数组,数组里存放的元素是4个 int2.数组指针数组指针是指向数组首元素的地址的指针,其本质为指针(这个指针存放的是数组首地址的地址,这个指针不可移动); 例如int(*arr)[4] , 因为 * 先跟 arr 结合,再跟 [ ] 结合,所以其是一个数组指针。 二维数组的传参可以运用数

2017-11-16 22:27:26 358

原创 判断一个字符串是否为另外一个字符串旋转之后的字符串。 例如:给定s1 = AABCD和s2 = BCDAA,返回1,给定s1=abcd和s2=ACBD,返回0.

int findLeftMove(char *str, char *substr){ int strLen = strlen(str); int subStrLen = strlen(substr); if (strLen != subStrLen) { return -1; } int newSize = 2 * strLen +

2017-11-10 10:17:32 339

原创 实现一个函数,可以左旋字符串中的k个字符。 ABCD左旋一个字符得到BCDA ABCD左旋两个字符得到CDAB

void move(char *arr, int count){ int j = 0; char tmp = arr[0];//把第一位字符保存起来 for (j = 0; j < count - 1; j++) { arr[j] = arr[j + 1];//把后一位赋值给前一位 } arr[j] = tmp;//把保存起来的第一位

2017-11-10 09:12:03 621

原创 有一个字符数组的内容为:"student a am i",请你将数组的内容改为"i am a student". 要求: 不能使用库函数。只能开辟有限个空间(空间个数和字符串的长度无关)。 提交

这是解题思路:int my_strlen(const char *str){ assert(str); int len = 0; while (*str++) { len++; } return len;}void reverse(char *start, char *end){ assert(start); a

2017-11-09 21:46:05 377

原创 一组数据中只有一个数字出现了一次。其他所有数字都是成对出现的。 请找出这个数字。(使用位运算)

题目要求要用位运算,而且要找到不是单独出现的数据。此时我们可以想到异或的特性,一个数据异或上自己时的到0。所以所有成对的数据异或玩之后得到0,0再异或上单独的值(单身狗)就得到它本身。 下面是代码实现:int main(){ int arr[] = { 1, 2, 3, 4, 1, 2, 3, 4, 5 }; int z = sizeof(arr) / sizeof(arr[0]

2017-11-09 17:56:00 224

原创 不使用(a+b)/2这种方式,求两个数的平均值。

题目的要求是让我们注意溢出的问题,所以我们可以考虑a和b没求和之前进行处理。//方法一int mean_v(int x,int y){ int z = 0; z = (x - y) / 2 + y; return z;}//方法二int mean_n(int x, int y){ int z = 0; x = x >> 1; y = y >>

2017-11-08 00:18:49 167

原创 1.编写函数: unsigned int reverse_bit(unsigned int value); 这个函数的返回值value的二进制位模式从左到右翻转后的值。

//方法一unsigned int reverse_bit(unsigned int n){ int i = 0; int value = 0; int bit = 0; for (; i < 32; i++) { value = value << 1; bit = n & 1; value |= bit;

2017-11-07 22:26:48 230

原创 Linux环境和宏

Linux是一套免费使用和自由传播的类Unix操作系统,是一个基于POSIX和UNIX的多用户、多任务、支持多线程和多CPU的操作系统。它能运行主要的UNIX工具软件、应用程序和网络协议。它支持32位和64位硬件。Linux继承了Unix以网络为核心的设计思想,是一个性能稳定的多用户网络操作系统。      以下是它简单的操作指令:            ls //list 列出当前文件夹

2017-10-29 00:38:25 1041

原创 c语言操作符

操作符是在编程最常运用到工具,熟悉操作符对我们学好C语言有很大的帮助。操作符可以分为: 一.算术操作符 二.移位操作符 三.位操作符 四.赋值操作符 五.单目操作符 六.关系操作符 七.逻辑操作符 八.条件操作符 九.逗号表达式...

2017-10-29 00:35:14 144

原创 扫雷小游戏

扫雷小游戏是我们电脑中一个很常见很经典的小游戏,下面是我用C语言编出来的比较简陋的扫雷游戏。下面是我的思路: 一:首先定义两个二维数组,一个初始化为0,一个初始化为 * (或者其他符号,用于覆盖雷) 二:布雷,用strand函数(srand((unsigned)time(NULL));)在初始化为零的数组埋雷,在数组的第二行第二列到倒数第二行第二列之间埋雷(博主是arr[1][1]

2017-10-25 19:13:50 233

原创 三子棋

源文件展示:#ifndef __GAME_H__#define __GAME_H__#include<stdio.h>#include<stdlib.h>#include<time.h>#define ROWS 3#define COLS 3void init_board(char arr[ROWS][COLS], int rows, int cols);void display_boa

2017-10-23 13:13:05 202

空空如也

空空如也

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

TA关注的人

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