- 博客(22)
- 收藏
- 关注
原创 Linux-MySleep函数实现与竟态条件
(一) 函数实现的整体框架 1>需要用到的函数接口 2>实现的整体过程思路 3>程序运行遇到可能情况的分析 4>优化结果与解决方案 (二)三个主要的函数接口 根据系统内部的sleep函数为基础,通过了解其运行过程,可以使用alarm()函数,pause()函数以及sigaction()函数进行实现。 函数参数及返回值Markdown Extra 表格语法: 函数名称 参数 返回值
2017-08-05 14:18:14
501
原创 求一个数组中出现次数前k种的元素
mapstring, int> fruitCount;//创建map对象 for (int i = 0; i sizeof(fruits) / sizeof(fruits[0]); ++i) { mapstring, int>::iterator it = fruitCount.find(fruits[i]);//创建map迭代器 if (it != fruitCo
2017-08-02 13:42:56
1192
原创 数据结构—二叉搜索数
1.二叉树二叉树是每个节点最多有两个子树的树结构。通常子树被称作“左子树”(left subtree)和“右子树”(right subtree)。二叉树常被用于实现二叉查找树和二叉堆。 二叉树的每个结点至多只有二棵子树(不存在度大于2的结点),二叉树的子树有左右之分,次序不能颠倒。二叉树的第i层至多有2^{i-1}个结点;深度为k的二叉树至多有2^k-1个结点;对任何一棵二叉树T,如果其终端结点数
2017-07-21 14:26:49
393
原创 C++实现一个栈,出栈,入栈,返回最小值 时间复杂度为O(1),查找字符串中第一个重复出现的字符
#include #include using namespace std; template class Stack { public: void push(int d) { s.push(d); if (s.size()==1) { min.push(d); } else if (s.top() { min.push(d); } } void pop
2017-07-19 15:33:18
659
原创 C++面试题 用俩个栈(队列)实现一个队列(栈)
#include #include class Solution1 { public: void push(int node) { stack1.push(node); } int pop() { while (!stack1.empty()) { stack2.push(stack1.top()); stack1.pop(); } int result = s
2017-07-17 10:49:26
334
原创 只能在堆(栈)上创建的类
在C++中,类的对象建立分为两种,一种是静态建立,如A a;另一种是动态建立,如A* ptr=new A;这两种方式是有区别的。 静态建立一个类对象,是由编译器为对象在栈空间中分配内存,是通过直接移动栈顶指针,挪出适当的空间,然后在这片内存空间上调用构造函数形成一个栈对象。使用这种方法,直接调用类的构造函数。 动态建立类对象,是使用new运算符将对象建立
2017-07-15 15:19:27
499
原创 C++各种常见排序算法
1.冒泡排序<1>冒泡排序的本质在于每一趟循环从数组的头走到尾找到最大的值放在最右边,下一次循环继续从剩下的n-1个数中寻找最大值放到最右边。直到剩下最后俩个数比较交换后结束。<2>比较方式也简单易懂,拿升序为例,用a[i]与a[i+1]比较,如果a[i]>a[i+1],swap(a[i],a[i+1]),当然,如果10个数进行排序,比较九次就可以确定这十个数中的最大值。简单的代码实现如下:
2017-07-13 22:37:37
576
原创 深夜的你—开心编程之深夜体会
我以为你早已离去 平淡的人生不值得你回味 还是熟悉的前奏 没有睁开眼睛看你 是无力也是心存侥幸 真的不想再看见你 可是你好像并不是一个人在战斗 你不断地发出挑衅的音波 我疲惫的身躯不断被你一点点的唤醒 终于 我打开了手电筒 照在你脸上的强光 是我对你最后的珍惜 让你再看一眼这明亮的世界 送你和你往年的前辈们相聚
2017-07-06 14:50:40
286
原创 斐波那契数列的递归与非递归实现
非递归的时间复杂度为O(n) #include using namespace std; int Fib(size_t N) { int a1 = 0, a2 = 1, a3 = N; if (N return a3; for (size_t idx = 2; idx { a3 = a1 + a2; a1 = a2; a2 = a3; } return a
2017-05-13 23:29:25
356
原创 C++模板的认识(一)函数模板
1 模板函数 模板函数是为了解决同一类参数类型不同函数多次写入重复函数体代码 的问题,通过一个函数模板来实现所以数据类型的该函数,更像是一个参数模板,就好像多态一样,有一个父类,被所以编辑器中类型继承,调用谁就使用哪个子类中的函数。 函数模板的声明形式为: template<typename 数据类型参数标识符> (参数表) { 函数体 } #include
2017-05-10 09:19:26
327
原创 无头单链表第k个结点的删除
#include using namespace std; struct Node { Node*_next; Node * _pre; size_t data; }; void pop_no_headlistthe_k_node( Node* pHead, size_t k) { Node* cur1 = pHead; Node* cur2 = pHead; for (
2017-05-04 10:16:53
702
原创 从尾到头打印单链表
struct ListNode { int m_nKey; ListNode * m_pNext; }; void PrintListNodeReversingly(ListNode * pHead) { if (pHead != NULL) { if (pHead->m_pNext != NULL) { PrintListNodeReversingly(pHead->m_p
2017-04-29 10:36:20
274
原创 String 类的基础功能实现
#define _CRT_SECURE_NO_WARNINGS #include #include using namespace std; class String { public: String() :_length(0) , _ptr(NULL) {} String(const char* ptr) { if (ptr == NULL) return;
2017-04-29 10:18:57
333
原创 C++双向链表的实现
#include #include using namespace std; typedef int DataType; // 首先要明白一个链表的组成,链表又结点连接起来构成,我们定义出一个结点的结构体,每一个结点都有自己的next域,pre 域,以及自身的数据。 struct Node { Node( const DataType& data = DataType()) :
2017-04-19 15:46:30
407
原创 linux下的进程描述符task_struct 结构体认识
操作系统在管理文件的时候主要有俩个步骤,先描述再组织。每一个进程都有一个pcb控制块,pcb控制块用task_struct结构体来存放内容,那么这个结构体当中到底放了一些什么内容,我们可以简单的认识一下,下面是一些基本的内容以及功能。 struct task_struct { //这个是进程的运行时状态,-1代表不可运行,0代表可运行,>0代表已停止。 volatile
2017-04-18 14:09:51
1052
原创 多态的认识
1.多态的概念我们之前用到的函数实现都是一个对象对应一种方法,多态就意味着一个对象对应着多种方法。那么,如何使一个对象自己可以选择所需要的函数,这就涉及到了我们说的晚绑定问题,也就是在程序运行是绑定函数地址。与之对应的静态绑定(也称早绑定)就是在程序编译的时候绑定的,要想实现多态,必须要是在晚绑定的前提下。1>如何实现晚绑定(也是动态绑定) #include<iostream> using n
2017-04-14 12:25:27
495
原创 继承的学习认识
1. 继承的概念继承是面向对象程序设计使代码可以复用的最重要的手段,允许程序员在保持原有类特性的基础上进行扩展,增加概功能,这样产生新的类叫派生类。继承呈现了面向对象程序设计的层次结构,体现了由简单到复杂的认知过程。2. 继承的定义首先要有一个基类(父类),然后再定义一个派生类(子类)可以以三种方式继承基类中的全部内容。三种继承方式分别为public protected以及private。当继承的
2017-04-10 12:34:13
410
原创 c++日期类的功能实现
#include using namespace std; class Date { friend ostream& operator public: bool check_is_true(int year,int month,int day)//判断日期合法性。 { if (_year12) || (_day>_month_day(_year, _month))) return
2017-03-30 11:42:38
519
原创 运算符重载的实现代码
# include using namespace std; class Complex { friend ostream& operator public: Complex(const double real, const double image) :_real(real) , _image(image) {} Complex(const Complex
2017-03-17 12:21:55
489
原创 C++类中函数隐藏参数——this指针
C++类中函数隐藏参数——this指针 this指针于类相继而生,在引用之前产生,故保留其体系。 this指针到底做了些什么的事情,我们可以拿一段代码来看一下。 #include <iostream> using namespace std; class Student { public: void InitStudent(char *name, char *gender, int * age) {
2017-03-12 12:21:31
4267
原创 猜数字游戏
最近积累的一些代码的结合应用 猜数字游戏 #define _CRT_SECURE_NO_WARNINGS 1 #include void menu() { printf("*************************\n"); printf("******1.play 0.exit******\n"); printf("*******************
2016-12-07 20:21:43
283
原创 编程 的起点
我叫冯玉盛,是陕西科技大学信息与计算科学14级的学生,喜欢运动,热爱编程,性格活泼,乐于与人交流。粗犷的外表却藏不住我细腻的心,学习上比较慢,可能也是不想错过任何一个对我有帮助的地方。偶尔玩下游戏,喜欢那种团队合作所带来的个人无法实现的1+1>2的感觉。喜欢打篮球,玩累了躺在床上看看电影,以后我的生活当中要多了一个编程。 既然选择了编程,就先给自己设立一些小目标。 1.先熟悉c语
2016-11-25 14:04:16
403
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅