
温故而知新
文章平均质量分 87
草根学僧
意在记录自己的收获成果
展开
-
string简单实现
要开始准备秋招了,将以前写过的东西拿出来再实现下#include<iostream>#include<assert.h>using namespace std;class String{public: typedef char* Iterator;public: friend ostream& operator<<(ostream& os, String& s);publ原创 2017-05-14 14:02:11 · 1016 阅读 · 0 评论 -
汇总
说说文件描述符文件描述符就是一个整数,在open时产生。起到一个索引的作用,进程通过PCB中的文件描述符表找到该fd所指向的文件指针。 文件描述符的操作:返回一个文件描述符,内核会在每个进程空间中维护一个文件描述符表,所以打开的文件都将通过此表中的文件描述符来引用。 每个进程在PCB即进程控制块中都保存着一份文件描述符表,文件描述符就是这个表的索引,文件描述表中每个表项都有一个指向已打开文件的指原创 2017-09-04 15:09:37 · 461 阅读 · 0 评论 -
Linux-进程
什么是进程?进程定义: 从定义上来说的话,进程就是一个正在执行的程序、计算机中正在运行的程序的一个实体 其实进程可以看作是由三部分组成的分别是:一段可以执行的程序(运行中的程序)程序所需要的相关数据(变量、工作空间、缓冲区等)程序的执行上下文这最后一部分是根本。执行上下文也被叫做进程状态,是操作系统用来管理和控制进程所需的内部数据。这中内部信息和进程是分开的,因为操作系统不允许被进原创 2017-08-15 12:59:34 · 320 阅读 · 0 评论 -
数据结构--排序
冒泡void bubble_sort(vector<int>& v){ int size = v.size(); int flag = 0; for (int i = 0; i < size-1;++i){ for (int j = i + 1; j < size;++j){ if (v[i]>v[j])原创 2017-08-14 16:27:01 · 1263 阅读 · 0 评论 -
数据结构--one
单链表单链表简单实现(1)链表和数组的区别数组静态分配内存,链表动态分配内存 数组必须事先定义固定大小,不能适应数据动态增减的情况。当数据增多时,可能超出原先定义的个数,当数据减少时,造成内存浪费。数组中插入、删除都需要移动其他元素。 而链表采用动态分配内存的形式实现,可以适应数据动态地增减的情况, 需要时可以用new/malloc分配内存空间,不需要时用delete/free将已原创 2017-08-06 12:53:16 · 415 阅读 · 0 评论 -
数据结构-红黑树相关问题
红黑树的数据结构的定义。enum Color { RED = 0, BLACK = 1 }; struct RBTreeNode { struct RBTreeNode*left, *right, *parent; int key; int data;原创 2017-08-11 12:16:23 · 866 阅读 · 0 评论 -
单链表简单实现
用作复习,简单实现下单链表,这里我自己添加了个尾指针。#include<iostream>using namespace std;template<class T>struct Node{ T _val; Node<T>* _next; Node(const T& val) :_val(val) ,_next(NULL) {}}原创 2017-08-06 11:02:10 · 323 阅读 · 0 评论 -
C/C++--two
面向对象面向对象设计的三原则:封装、继承、多态。(1)析构函数可以设置为virtual,为什么? 主要是因为多态的存在,例如一个父类指针指向一个子类对象,试想一下如果子类构造函数如果在堆中分配了内存,而析构其析构函数又不是virtual的,这个指针的静态类型是父类类型,那么撤销这个父类指针时,将只会调用父类的析构函数,而不会释放子类占据的内存,造成内存泄漏。 将父类的析构函数设置为virtual原创 2017-08-05 18:07:20 · 1179 阅读 · 0 评论 -
C/C++--one
C和C++的关系(1)在C++程序中调用被C编译器编译后的函数,为什么要加extern “C”? 答:C++支持函数重载,C语言不支持。函数在被C++编译后在库中的名字与C语言不同。 例如:函数原型为void foo(int x,int y),则该函数被C编译器编译后在库中的名字为_foo,而C++编译器则会产生像_foo_int_int这类的名字。 C++提供C连接交换制定符号extern“原创 2017-08-04 17:48:14 · 927 阅读 · 0 评论 -
链表相关的热点面试题(一)
先把相关的题目给出来 1. 从尾到头打印单链表 2. 删除一个无头单链表的非尾节点 3. 在无头单链表的一个非头节点前插入一个节点 4. 逆置/反转单链表 5. 单链表排序 6. 合并两个有序链表,合并后依然有序 7. 查找单链表的中间节点, 要求只能遍历一次链表 先把单链表结构给出来template<typename T>struct Node{ Node<T>* _n原创 2017-05-15 13:28:39 · 1016 阅读 · 0 评论 -
判断单链表是否带环? 若带环, 求环的长度? 求环的入口点?
给定一个单链表,只给出头指针h: 判断单链表是否带环? 若带环, 求环的长度? 求环的入口点? 问题1:判断是否存在环? 用快慢指针求,快指针一次两步,慢指针一次一步,如果带环的话那么两指针必定在环内有一个交点,如果快指针fast或者fast->next走到NULL的话,则说明链表不带环。//这里可以返回一个pair类型的值//因为后面求长度还需要用到这个交点pair<Node<int>原创 2017-05-15 18:32:36 · 1669 阅读 · 0 评论 -
链表相关的热点面试题(二)
相关题目: 1.判断两个链表是否相交, 若相交, 求交点。 ( 假设链表不带环) 2.判断两个链表是否相交, 若相交, 求交点。 ( 假设链表可能带环) 【升级版】 3.复杂链表的复制。 一个链表的每个节点, 有一个指向next指针指向下一个节点, 还有一个random指针指向这个链表中的一个随机 节点或者NULL, 现在要求实现复制这个链表, 返回复制后的新链表。 4.求两个已排序单链表原创 2017-05-15 21:39:27 · 737 阅读 · 0 评论 -
C++实现单链表
花了点时间再次把单链表,以及相关各种操作函数实现了。#include<iostream>#include<assert.h>using namespace std;template<typename T>struct Node{ Node<T>* _next; T _value; Node(const T& value = T()) :_value(原创 2017-05-14 17:28:13 · 1043 阅读 · 0 评论