
c++
文章平均质量分 65
face in the wind
这个作者很懒,什么都没留下…
展开
-
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 · 4146 阅读 · 0 评论 -
数据结构—二叉搜索数
1.二叉树二叉树是每个节点最多有两个子树的树结构。通常子树被称作“左子树”(left subtree)和“右子树”(right subtree)。二叉树常被用于实现二叉查找树和二叉堆。 二叉树的每个结点至多只有二棵子树(不存在度大于2的结点),二叉树的子树有左右之分,次序不能颠倒。二叉树的第i层至多有2^{i-1}个结点;深度为k的二叉树至多有2^k-1个结点;对任何一棵二叉树T,如果其终端结点数原创 2017-07-21 14:26:49 · 318 阅读 · 0 评论 -
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 · 438 阅读 · 0 评论 -
C++模板的认识(一)函数模板
1 模板函数模板函数是为了解决同一类参数类型不同函数多次写入重复函数体代码 的问题,通过一个函数模板来实现所以数据类型的该函数,更像是一个参数模板,就好像多态一样,有一个父类,被所以编辑器中类型继承,调用谁就使用哪个子类中的函数。函数模板的声明形式为:template<typename 数据类型参数标识符>(参数表){ 函数体} #include原创 2017-05-10 09:19:26 · 280 阅读 · 0 评论 -
斐波那契数列的递归与非递归实现
非递归的时间复杂度为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 · 304 阅读 · 0 评论 -
无头单链表第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 · 646 阅读 · 0 评论 -
C++双向链表的实现
#include #include using namespace std;typedef int DataType;// 首先要明白一个链表的组成,链表又结点连接起来构成,我们定义出一个结点的结构体,每一个结点都有自己的next域,pre 域,以及自身的数据。struct Node{Node( const DataType& data = DataType()):原创 2017-04-19 15:46:30 · 350 阅读 · 0 评论 -
多态的认识
1.多态的概念我们之前用到的函数实现都是一个对象对应一种方法,多态就意味着一个对象对应着多种方法。那么,如何使一个对象自己可以选择所需要的函数,这就涉及到了我们说的晚绑定问题,也就是在程序运行是绑定函数地址。与之对应的静态绑定(也称早绑定)就是在程序编译的时候绑定的,要想实现多态,必须要是在晚绑定的前提下。1>如何实现晚绑定(也是动态绑定) #include<iostream> using n原创 2017-04-14 12:25:27 · 443 阅读 · 0 评论 -
从尾到头打印单链表
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 · 220 阅读 · 0 评论 -
String 类的基础功能实现
#define _CRT_SECURE_NO_WARNINGS#include #includeusing namespace std;class String{public:String():_length(0), _ptr(NULL){}String(const char* ptr){if (ptr == NULL)return;原创 2017-04-29 10:18:57 · 290 阅读 · 0 评论 -
linux下的进程描述符task_struct 结构体认识
操作系统在管理文件的时候主要有俩个步骤,先描述再组织。每一个进程都有一个pcb控制块,pcb控制块用task_struct结构体来存放内容,那么这个结构体当中到底放了一些什么内容,我们可以简单的认识一下,下面是一些基本的内容以及功能。struct task_struct { //这个是进程的运行时状态,-1代表不可运行,0代表可运行,>0代表已停止。 volatile原创 2017-04-18 14:09:51 · 947 阅读 · 0 评论 -
运算符重载的实现代码
# include using namespace std;class Complex{friend ostream& operatorpublic:Complex(const double real, const double image):_real(real), _image(image){}Complex(const Complex原创 2017-03-17 12:21:55 · 424 阅读 · 0 评论 -
继承的学习认识
1. 继承的概念继承是面向对象程序设计使代码可以复用的最重要的手段,允许程序员在保持原有类特性的基础上进行扩展,增加概功能,这样产生新的类叫派生类。继承呈现了面向对象程序设计的层次结构,体现了由简单到复杂的认知过程。2. 继承的定义首先要有一个基类(父类),然后再定义一个派生类(子类)可以以三种方式继承基类中的全部内容。三种继承方式分别为public protected以及private。当继承的原创 2017-04-10 12:34:13 · 350 阅读 · 0 评论 -
c++日期类的功能实现
#includeusing namespace std;class Date{friend ostream& operatorpublic:bool check_is_true(int year,int month,int day)//判断日期合法性。{if (_year12) || (_day>_month_day(_year, _month)))return原创 2017-03-30 11:42:38 · 476 阅读 · 0 评论 -
求一个数组中出现次数前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 · 1136 阅读 · 0 评论