自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Linux---环境变量

基本概念: 环境变量(environment variables)一般是指在操作系统中用来指定操作系统运行环境的一些参数,通常具有全局属性。 例如:当我们在写c/c++代码时,我们并不知道所链接的动态静态库在哪里,但照样可以链接成功。这是因为有相关环境变量帮助编译器进行查找。常见的环境变量 ·PHAT*:指定命令的搜索路径 ·HOME*:指定用户的主工作目录(及用户登陆到Lin

2018-04-30 14:34:18 132

原创 Linux---模拟实现僵尸进程和孤儿进程

我们先了解一下进程都有哪几种状态。 kernel源代码里定义了进程的如下状态: · R 运行状态(running):表明进程要么是在运行中要么是在运行队列里。 · S 睡眠状态(sleeping):意味着进程在等待事件完成,有时叫做可中断睡眠。 · D磁盘休眠状态(Disk sleep):不可中断睡眠状态,在这个状态进程通常会等待I/O的结束。 · T 停止状态(stopped):

2018-04-30 11:46:21 223

原创 Linux---浅谈进程PCB

在说PCB是什么之前,我们先了解一下进程到底是什么。它和程序又有什么区别? 程序:二进制可执行文件,是一个机器代码指令和数据的集合,存储在硬盘里,是一个静态的实体。 //指令+数据 进程:是操作系统对一个正在运行的程序的一种抽象,将二进制可执行文件加载到内存里。 //指令+数据+PCB那么PCB到底是什么呢?...

2018-04-27 17:58:12 1034

原创 数据结构---复杂迷宫求解(多路径带环)

上一篇博客我们提到了多出口迷宫的情况,但是在此基础上迷宫路径如果带环呢,如何解决? 情况如下图: 可以看出,红色圈出来的部分形成了一个环。那如果我们还是采用上次的办法,看看能不能找出最短路径。 通过上图,我们可以看到并不能达到预期效果,打印出来的并不是最短路径。这是为什么呢? 原因在于我们按照顺时针“上右下左”的顺序探测该点四周能否能落脚时,如下面 A 图所示,先找到了第一条路径即...

2018-04-27 00:50:38 777

原创 数据结构---多出口迷宫找出一条最短路径

前面我们实现了基础版本的迷宫求解,只有一条路径。现在如果有多个出口,我们该如何去找到一条最短的路径。我们先来思考一下我们是如何在一个数组里找最小值的? 有下面一个数组: 我们可以先把第一个数设为最小值,然后遍历数组,拿它和后面的元素进行比较,把两个数中较小的赋给min,直到遍历完整个数组,min中就是数组中的最小值。同样的,找最短路径也是一样的思路。我们可以定义两个栈,一个cur_...

2018-04-26 20:45:55 938

原创 Linux--自主shell加强版(支持输入输出重定向)

前面我们写了一个基础版本的shell,但有些功能没有实现。这次我们直接在上次的基础上将代码稍加修改,使其支持输入输出重定向。 过程还是一样: · 获取命令行 · 解析命令行 · 创建子进程(fork) · 替换子进程(execvp) · 父进程等待子进程退出(wait) 只不过这次解析命令行时需要对输入重定向 (<)和 输出重定向 (>)做特殊处理。 输入

2018-04-26 00:43:54 170

原创 数据结构---回溯法解决迷宫问题

回溯法:深度优先搜索,对一个包括有很多个结点,每个结点有很多个搜索分支的问题,把原问题分解为若干个子问题求解的算法;当搜索到某个结点发现无法在继续搜索时,就让搜索过程回溯(回退)到该结点的前一个结点,继续搜索该结点外的其他尚未搜索到的分支;如果发现该结点无法在搜索下去,就让搜索过程回溯到这个结点的前一结点继续这样的搜索过程;这样的搜索过程一直持续到问题的解或者搜索完了全部可搜索分支没有解为止...

2018-04-25 18:19:44 540

原创 Linux---进程的调度算法

系统中的cpu资源是有限的,当同时有多个进程处于就绪状态,要竞争cpu资源时,操作系统就要负责完成分配资源的任务。在操作系统中,由调度程序来完成这一选择分配的工作,调度程序所使用的算法即是调度算法。 调度算法一般有以下几种: 一、 先来先服务算法(FCFS:First Come,First Served) 1&gt; 算法原理: 依据进程进入就绪队列的先后顺序排列,谁先排队,就先执行谁,谁...

2018-04-23 00:29:43 272

原创 Linux-简单的shell实现

当我们在Linux下打开一个终端时,可以通过在上面输入一些命令,来实现与终端的互动。例如: 可以看到,当我们输入一条命令后,终端会等待下一条命令的输入。这就类似于一个死循环,不停的输入命令。 在编写shell解释器之前,我们先看一下shell脚本执行过程: fork创建子进程后执行的是和父进程相同的程序(但有可能是不同的代码分支),子进程调用exec函数以执行另一个程序。此时,该进程...

2018-04-19 00:44:30 288

原创 数据结构-栈和队列相关面试题

1.实现一个最小栈,每次取得都是栈里面的最小值,时间复杂度为O(1) 思路:每次入栈两个元素,一个存当前值,一个存当前栈的最小值,先将当前值入栈,再将最小值入栈,出栈时也一次出两个。如图所示: 代码如下:#include"seqstack.h"#include&lt;stdio.h&gt;typedef struct MinStack{ SeqStack stack...

2018-04-17 00:39:23 234

原创 数据结构-顺序队列和链式队列的实现

上篇博客说的栈是操作受限制的线性表,同样的,队列也是操作受限制的线性表,不同于栈,它的头和尾两头都受限制,只能在一端进行插入(只进不出),我们称为队尾,在另一端进行删除(只出不进),称作队首。 遵循的原则是:”先进先出“(first in first out),简称”FIFO”.我们生活中的排队现象就是队列的一种应用,先来的人先进入队伍亦先买到东西离开,即先进先出。 队列也有顺序和链式两种存储...

2018-04-13 18:31:47 1119

原创 数据结构-顺序栈和链式栈的实现

栈是一种特殊的线性表,它特殊在对线性表的操作进行了限制,只能在它的一端进行插入和删除,如下图所示: 遵循的是“先进后出”(first in last out)的规则,简称为”FILO”。 既然栈也是线性表,那么线性表的存储结构同样也适用于栈,通常有顺序栈和链式栈两种。 1.顺序栈的实现 头文件声明:seqstack.h#pragma once#include&lt;std...

2018-04-13 17:00:30 412

原创 数据结构-链表的经典面试题

在前面的博客中我们对链表做了一些基本操作,所以在此不再赘述。直接来看,有哪些和链表有关的面试题以及如何去实现它们。 1.头文件声明linklist.h#pragma once typedef char LinkNodeType;typedef struct LinkNode{ LinkNodeType data; struct LinkNode *next;...

2018-04-12 01:20:17 1225

原创 数据结构-带头节点、带环的双向链表的一些基本操作

前面的博客中我们实现了不带头结点、不带环的单向链表,其操作比较复杂,且实际应用相对较少。那今天我们来实现一下带头节点、带环的双向链表,相对来说操作比较简单,而且实际应用性较强。 声明:dlinklist.h#pragma once//带头节点、带环的双向链表typedef char DLinkType;typedef struct DLinkNode{ DLinkT...

2018-04-06 17:57:01 268 2

空空如也

空空如也

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

TA关注的人

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