- 博客(10)
- 收藏
- 关注
原创 文件标识符及Linux下的文件相关调用接口
在我们运行C程序的时候,C会为我们默认打开三个输入输出流,分别是stdin,stdout,stderr。通过查阅man手册可以得知,这三个流的类型都是FILE*,fopen返回值类型是文件指针。打开文件的类型一般有r,r+,w,w+,a,a+这些读写和追加这几种对文件的操作方式。FILE *fp = fopen("filename","w");const char* msg = "h...
2018-05-20 18:29:25 444
原创 模拟实现命令解释器shell
shell的字面翻译是壳,所以在Linux中有时也被称为外壳,主要功能是用来进行用户与内核之间的交互,他接收用户的命令送给内核去执行。 今天来模拟实现一下Linux下的命令行解释器shell的部分功能,在此运用到主要的知识点有创建子进程,进程等待和进程替换,还有main函数的命令行参数。 完整代码大家可以参考这个:模拟实现Shell完整代码既然是命令解释器,那么当然要给我们一个输入命令的地...
2018-05-19 15:29:05 1549
原创 二叉搜索树
二叉搜索树又称二叉排序树,它可以是一棵空树,如果不为空,则具有以下性质: 左子树不为空,则左子树上的所有结点都小于根节点的值。 右子树不为空,则右子树上的所有结点都大于根节点的值。二叉搜索树完整代码先来看看基本操作(.h头文件)#pragma once#include<stdio.h>#include<malloc.h>#include<asse...
2018-05-14 21:30:58 159
原创 堆的基本操作
首先堆是一棵完全二叉树,其次堆分大顶堆和小顶堆。 大顶堆的堆顶,也就是根节点,其值大于左孩子的值且大于右孩子的值,左右孩子的大小不做区分,其子树满足这一性质。 小顶堆的堆顶,也就是根节点,其值小于左孩子的值且小于右孩子的值,左右孩子的大小不做区分,其子树满足这一性质。堆基本操作的完整代码然后我们来看看如果创建一个堆:在创建堆的时候,我们要给堆所需的元素,否则创建的堆为空堆,空堆的实际意...
2018-05-14 11:14:09 156
原创 二叉树基本操作及其常见面试题
前面的一些博客有谈到链表和顺序表这些数据结构,这些都属于一对一的线性结构,而在我们处理一对多的问题时,线性结构时常显得不够用,这个时候我们就引入了一种新的数据结构,树!大概长下面这样子: 一个结点拥有多少棵子树称结点的度为多少,而我们今天要聊的重点是树中的一个重要分支,二叉树。二叉树是不存在任何度大于二的树,左右子树有序,不能存在颠倒,即使只有一棵子树,也要区分左子树还是右子树。...
2018-05-07 17:54:43 377
原创 带环迷宫
迷宫和栈的头文件(.h)#pragma once#include<stdio.h>#include<assert.h>#include<stdio.h>#include<stdlib.h>#include<assert.h>#include<string.h>#define MAX_SIZE 100#de...
2018-05-05 16:25:07 192
原创 栈的基本操作及粗浅应用
今天我们来聊聊栈,栈的基本模型其实比较简单,他所拥有的特性也就是LIFO(后进先出),实现起来可以通过顺序表的基本结构来实现,也可以用链表的基本结构来实现。 可是既然已经有了顺序表和链表这种结构,那么栈存在的意义在哪里呢?这就是我们今天要聊的,首先压栈和弹栈这两项基本操作的时间复杂度都是O(1),其次,栈的后进先出这一特性决定了在很多应用场景下栈都可以有很大的发挥。 比如,我们在写程序...
2018-05-03 21:46:25 166
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人