- 博客(35)
- 收藏
- 关注
原创 Linux下的文本编辑器和Windows的编辑器
Linux下有:vi/vim:功能强大,插件多。gedit:(我的电脑上没有,无法演示)nano命令:nano是一个字符终端的文本编辑器,有点像DOS下的editor程序。它比vi/vim要简单得多,比较适合Linux初学者使用。nano亲自体验心得:感觉这个编译器还不错,界面丑了点,编译方式有点不太灵活。 学习参考: http://man.linuxde.n
2018-03-29 10:19:04 5768
原创 Linux下实现简单进度条(彩色版)
既然之前学习了Makefile就现学现卖,此处只是编译一个文件,多文件编译原理相同!Makefile:processbar1:processbar1.o gcc $^ -o $@%o: %.c gcc -c $^ -o $@all=processbar1.i\ processbar1.s\ processbar1.o\ processbar1.PHONY: clean
2018-03-27 21:08:13 324
原创 进程状态及进程的基本操作
进程标识符:操作系统为每个进程分配一个独一无二的数字编号,这个编号称为进程标识符正整数[ 2 - cat/proc/sys/kernel/pid_max ) 操作系统选择下一个没有被使用的编号作为进程编号 0--内核进程 1--由0号进程产生,第一个用户态进程#include #include #include int main(){ pid_t p
2018-03-26 11:30:11 269
原创 C++实现日期类
Date(日期)类:练习实现类的成员函数。运算符的重载Date.h#include class Date{ //成员函数public: Date(){} Date(int year, int month, int day); //全缺省构造函数 Date(const Date& d); //拷贝构造 Date& operator=(const Date& d);
2018-03-24 23:34:42 177
原创 C++类的六个默认成员函数
【this指针】:1.每个成员函数都有一个指针形参,它的名字是固定的,成为this指针,this指针是隐式的,(构造函数比较特殊,没有这个隐含this形参)。2.类型: 类类型* const3.this指针并不是对象本身的一部分,不影响sizeof的结果4.this指针是”类成员函数”的第一个默认隐含参数,编译器自动维护传递,类编写者不能显式传递5.只有在类的非静态成员函数中才可以使用this指针...
2018-03-24 21:54:49 270
原创 Linux下软件的安装
须知:Linux下的软件安装都是在跟用户权限下的操作。gcc:yum install gcc 在安装完成后用which gcc查看是否安装成功;g++:yum install gcc-c++ 在安装完成后用which g++查看是否安装成功;gdb:yum install gdb在安装完成后用which gdb查看是否安装成功;此法无法安装时可参考:打开
2018-03-23 15:46:28 126
原创 Linux的gcc和gdb
在Linux下我们编号程序都会输入 gcc test.c -o test的gcc的编译命令,那么gcc还有其他的什么操作?知识储备:预处理:预处理阶段编译器主要进行宏替换,其功能还包括宏定义,文件包含,条件编译,去注释等。
2018-03-19 17:14:36 268
原创 元素出栈、入栈顺序的合法性【数据结构】
元素出栈、入栈顺序的合法性。如入栈的序列(1,2,3,4,5),出栈序列为(4,5,3,2,1)。Test.cint TestStackInAndOutValid(int* In, int InSize, int* Out, int OutSize){ Stack s; int InIndex = 0; int OutIndex = 0; //入栈次序的大小和出栈的不相等 ,返回
2018-03-18 21:35:48 392
原创 使用两个队列实现一个栈【数据结构】
使用两个队列实现一个栈StackByQueue.htypedef int SQDataType;typedef struct StackByQueue{ Queue q1; Queue q2;}StackByQueue;void InitStackByQueue(StackByQueue* s);void PushStackByQueue(StackByQueue* s,
2018-03-18 21:32:11 234
原创 使用两个栈实现一个队列【数据结构】
使用两个栈实现一个队列QueueByStack.htypedef int SQDataType;typedef struct QueueByStack{ Stack _s1; Stack _s2;}QueueByStack;void InitQueueByStack(Queu
2018-03-18 21:27:13 213
原创 实现一个栈,Push、Pop、Min的时间复杂度为O(1)【数据结构】
1>将最小值和当前元素封装成结构体MinStack.htypedef int ElemType;typedef struct Elem{ ElemType _data; ElemType _mindata;}Elem;void InitMinStack(MinStack* s);void MinStackPush(MinStack* s, ElemType data);vo
2018-03-18 21:23:35 514
原创 队列和栈面试题【数据结构】
1.实现一个栈,要求实现Push(出栈)、Pop(入栈)、Min(返回最小值)的时间复杂度为O(1)。2.使用两个栈实现一个队列3.使用两个队列实现一个栈4.元素出栈、入栈顺序的合法性。
2018-03-18 21:12:51 283
原创 队列---链式队列【数据结构】
链式队列:即是满足队列特性的单链表链式队列的基本操作:构成:typedef struct Node{ QDataType _data; struct Node* _pNext;}Node, *PNode;typedef struct Queue{ PNode _pHead; PNode _pTail;}Queue;创建新节点:PNode BuyNode
2018-03-14 14:30:15 170
原创 队列--环形队列【数据结构】
队列:1.只允许在一端进行插入数据操作,在另一端进行删除数据操作的特殊线性表 2.进行插入操作的一端称为队尾(入队列) 3.进行删除操作的一端称为队头(出队列) 4.队列具有先进先出(FIFO)的特性由于顺序队列在操作上有诸多不便,(出队列时,要进行元素的搬移,效率低下,还会出现假溢出的问题)在此我们可以创建循环的顺序队列,即环形队列。环形队列的实现:
2018-03-14 14:13:47 684
原创 栈的应用----括号匹配、逆波兰表达式【数据结构】
问题描述:有一个字符串、判断其中的括号是否匹配?问题解决:利用栈1.先将字符串逐次扫描,遇到左括号均入栈,遇到右括号与栈顶字符相比较。2.若栈为空,则说明字符串中右括号多余3.若栈不为空,且字符相匹配,栈顶元素出栈,继续检测下一字符,若不匹配,则说明括号匹配的类型不正确4.若都相匹配且栈为空,则说明字符串中括号匹配正确,若栈不为空,则说明左括号多余。#include
2018-03-14 13:47:55 183
原创 顺序栈【数据结构】
栈:栈作为一种数据结构,是一种只能在一端进行插入和删除操作的特殊线性表。它按照先进后出的原则存储数据,先进入的数据被压入栈底,最后的数据在栈顶,需要读数据的时候从栈顶开始弹出数据(最后一个数据被第一个读出来)。栈具有记忆作用,对栈的插入与删除操作中,不需要改变栈底指针。————百度百科在实际的应用中我们大多创建的为顺序栈,因为顺序栈在入栈和出栈时的时间复杂度均为O(1)。顺序栈:
2018-03-14 13:25:00 229
原创 链表面试题【数据结构】
从尾到头打印单链表删除一个无头单链表的非尾节点(不能遍历链表)单链表实现约瑟夫环(JosephCircle)逆置/反转单链表
2018-03-12 11:12:14 186
原创 C指针【进阶】
区分方法:判断与其结合符号的优先级数组指针:指向数组的指针指针数组:存放指针类型的数组ex:int *p[10] -----指针数组int (*p)[10] ------数组指针 int array[10] = { 0 };//int *p = &array; //警告,p是指针int(*q)[10] = &array; //q是数组指针,用来存
2018-03-12 00:37:01 307
原创 malloc、calloc、realloc、free
知识储备:内存的分配,详见文章下链接malloc: void *malloc(size_t size);malloc分配的内存是位于堆中的,并且没有初始化内存的内容,因此基本上malloc之后,调用函数memset来初始化这部分的内存空间.在内存的动态存储区中分配一块长度为size字节的连续区域,参数size为需要内存空间的长度,返回该区域的首地址.calloc
2018-03-10 20:47:13 142
原创 链表【数据结构】
链表:一种链式存储的线性表,用一组地址任意的存储单元存放线性表的数据元素,称存储单元为一个节点链表分为:单链表双链表双向循环链表链表与顺序表的比较:顺序表支持随机访问,单链表不支持随机访问顺序表插入/删除数据效率很低,时间复杂度为O(N)(除尾插尾删),单链表插入/删除效率更高,时间复杂度为O(1)顺序表的高速缓存效率更高,单链表CPU高速缓存效率低这里介绍单链表的基本操作:结构:typedef ...
2018-03-10 00:30:01 169
原创 C指针【初阶】
指针:指针(Pointer)是编程语言中的一个对象,利用地址,它的值直接指向(points to)存在电脑存储器中另一个地方的值。由于通过地址能找到所需的变量单元,可以说,地址指向该变量单元。因此,将地址形象化的称为“指针”。意思是通过它能找到以它为地址的内存单元。
2018-03-06 20:38:54 138
原创 哈希表--开散列【数据结构】
哈希表:散列表(Hash table,也叫哈希表),是根据关键码值(Key value)而直接进行访问的数据结构。也就是说,它通过把关键码值映射到表中一个位置来访问记录,以加快查找的速度。这个映射函数叫做散列函数,存放记录的数组叫做散列表。———— 百度百科哈希冲突:对于两个数据元素的关键字Ki和Kj(i != j),有Ki != Kj,但有: HashFun(Ki) == HashFun(...
2018-03-06 14:28:56 406
原创 二叉搜索树【数据结构】
二叉搜索树(Binary Search Tree):(又:二叉搜索树,二叉排序树)它或者是一棵空树,或者是具有下列性质的二叉树: 若它的左子树不空,则左子树上所有结点的值均小于它的根结点的值; 若它的右子树不空,则右子树上所有结点的值均大于它的根结点的值; 它的左、右子树也分别为二叉排序树。————百度百科二叉搜索树的基本操作:构成:既然
2018-03-05 12:42:08 155
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人