C/C++
文章平均质量分 86
qingdou_aixuexi
小白学习中。。。。
展开
-
单链表的实现
单链表是一种链式存取的数据结构,用一组地址任意的存储单元存放线性表中的数据元素。代码实现:#include#includetypedef struct Node{int data;struct Node *next;}Node;typedef struct Node *list;void In_List(list *head){*head原创 2016-08-11 12:44:38 · 255 阅读 · 0 评论 -
继承和多态问题全解析
#define _CRT_SECURE_NO_WARNINGS 1//继承://private和protected的区别?//在类外如果想使用类中的成员,只能直接使用public类型的,protected和private都是不能访问的。//对于类外使用而言,这两个是完全相同的.//但是在基类的派生类中, 可以直接访问继承而来的protected成员, 但是不能访问pri原创 2016-09-01 23:32:46 · 244 阅读 · 0 评论 -
对象模型&模板
#define _CRT_SECURE_NO_WARNINGS 1////虚函数表是通过一块连续内存来存储虚函数的地址//#include//#include////using namespace std;////class Base//{//public:// virtual void func1()// {// cout // }原创 2016-09-02 16:30:45 · 263 阅读 · 0 评论 -
模拟实现C++/boost库智能指针auto_ptr scoped_ptr和share_ptr
#pragma once #includeusing namespace std;//1,AutoPtr 管理权转让(不建议使用)//2,scopedptr 防拷贝 声明为protected private 只声明不实现(建议使用)//3,shareptr 引用计数 增减计数,最后一个时释放对象//4,xxxarrar 管理数组。只需要重载[]//5,weakpt原创 2016-09-03 13:51:03 · 434 阅读 · 0 评论 -
异常问题解析及google异常规范
#define _CRT_SECURE_NO_WARNINGS 1//异常处理,当一个函数发现自己无法处理错误时抛出异常,让函数调用者直接或者间接的处理这个问题//异常的抛出和捕获//1,异常时通过抛出对象而引发的,该对象的类型决定了应该激活哪个处理代码//2,被选中的处理代码是调用链中与该对象类型匹配且离抛出异常位置最近的那一个//3,抛出对象后会释放局部储存对象,所原创 2016-09-04 08:47:31 · 914 阅读 · 0 评论 -
位段和联合
位段:有些信息在存储时,并不需要占用一个完整的字节, 而只需占几个或一个二进制位。例如在存放一个开关量时,只有0和1 两种状态, 用一位二进位即可。为了节省存储空间并使处理简便,C语言又提供了一种数据结构,称为“位域”或“位段”。所谓“位域”是把一个字节中的二进位划分为几个不同的区域并说明每个区域的位数。每个域有一个域名,允许在程序中按域名进行操作。 这样就可以把几个不原创 2016-08-12 23:15:43 · 470 阅读 · 0 评论 -
I/O流 文件读写
流:“流”即是流动的意思,是物质从一处向另一处流动的过程。C++流是指信息从外部输入设备(键盘等) 向计算机内部(如内存)输入和从内存向外部输出设备(显示器)输出的过程。这种输入输出的过程被形象的成为“流”为了实现这种流动,C++定义了I/O标准库,这些每个类都成为流/流类,完成一些功能。#define _CRT_SECURE_NO_WARNINGS 1#include原创 2016-09-05 00:11:02 · 351 阅读 · 0 评论 -
链表实现约瑟夫环
约瑟夫环(约瑟夫问题)是一个数学的应用问题:已知n个人(以编号1,2,3...n分别表示)围坐在一张圆桌周围。从编号为k的人开始报数,数到m的那个人出列;他的下一个人又从1开始报数,数到m的那个人又出列;依此规律重复下去,直到圆桌周围的人全部出列。代码实现:#include using namespace std;struct Node{in原创 2016-08-26 00:51:24 · 368 阅读 · 0 评论 -
非比较排序——计数排序和基数排序
计数排序基数排序代码实现:#pragma once#include#includeusing namespace std;int GetMaxDigit(int *a, size_t n)//最大有多少位{int digit = 1;//位数int max = 10;for (int i = 0; i {if (a[i]原创 2016-09-17 23:41:20 · 324 阅读 · 0 评论 -
类型转换问题代码及解析
#define _CRT_SECURE_NO_WARNINGS 1////类型转换//#include//#include//using namespace std;////void Test()//{// int i = 1;// //隐式类型转换// double d = i;// printf("%d,%.2f\n", i, d);//原创 2016-09-06 00:17:33 · 326 阅读 · 0 评论 -
C++类型萃取
C++模板中的类型参数T是抽象的,我们并不能在模板内部直接获得它的具体特征。类型萃取(抽取)技术就是要抽取类型的一些具体特征(trait),比如它是哪种具体类型,它是引用类型,内建类型,还是类类型等。可见,类型萃取技术其实就是trait模板技术的具体体现。获取类型的具体特征在Java、C#等语言中也称为反射(reflection),C++中通过模板技术也可以实现一定的反射行为。 类型信息是原创 2016-09-06 14:31:23 · 714 阅读 · 0 评论 -
比较排序总结——直接插入排序,希尔排序,选择排序,堆排序,冒泡排序,快速排序,归并排序
一,直接插入排序插入排序(Insertion Sort)的算法描述是一种简单直观的排序算法。它的工作原理是通过构建有序序列,对于未排序数据,在已排序序列中从后向前扫描,找到相应位置并插入。插入排序在实现上,通常采用in-place排序(即只需用到O(1)的额外空间的排序),因而在从后向前扫描过程中,需要反复把已排序元素逐步向后挪位,为最新元素提供插入空间。步骤:从第一个原创 2016-09-18 20:06:51 · 1319 阅读 · 0 评论 -
C++实现平衡搜索树
AVL树左子树和右子树的高度之差不超过1左子树和右子树都是AVL树平衡因子=右子树个数-左子树#define _CRT_SECURE_NO_WARNINGS 1#include#includeusing namespace std;templatestruct AVLTreeNode{ K _key; V _value; AVLT原创 2016-09-21 15:25:28 · 1899 阅读 · 0 评论 -
C++实现并查集
将N个不同的元素分成一组不相交的集合。开始时,每个元素就是一个集合,然后按规律将两个集合进行合并。假如已知有n个人和m对好友关系(存于数组r),如果两个人是直接的或间接的好友关系(好友的好友的好友....),则认为他们属于同一好友圈,请求出这n个人中有几个好友圈。例如:n=5,m=3,r={{1,2},{2,3},{4,5}},表示有5个人,1和2是好友,2和3是好友,原创 2016-09-28 23:46:38 · 2951 阅读 · 0 评论 -
strlen函数 strcpy函数 strcmp函数 strstr函数 strcat函数 memcpy函数 memmove函数 以及字符串反转函数的实现
//编写一个函数计算一个字符串的长度#include#include//int my_strlen(char *str)//{// int len = 0;// while (*str)// {// len++;// str++;// }// return len;//}int my_strlen(char *str){char原创 2016-08-10 18:05:59 · 475 阅读 · 0 评论 -
C++复习2
#define _CRT_SECURE_NO_WARNINGS 1////const修饰的成员变量////const 对象不能调用非const成员函数////非const对象可以调用const成员函数////const成员函数不能调用非const成员函数////非const成员函数可以调用const成员函数//#include//#include//原创 2016-09-01 00:04:28 · 206 阅读 · 0 评论 -
求二叉树中两个节点的最近公共祖先节点
二叉搜索树:如果给定了一个二叉搜索树任意的两个节点的值,要求找到这两个结点的最近的公共结点:如输入12和8输出 10它们有共同的祖先10和25,选择最近的祖先10;算法:给定两个节点node1和node2,如果node1所以我们可以前序遍历这个二叉搜索树若遍历到一个节点大于node2,所要求的结点就在此结点左侧,如遍历到15,那就在15左边否则在此结原创 2016-08-03 15:25:52 · 1540 阅读 · 0 评论 -
经典面试题:求数组的最大子序列和;实现函数 :判断一个自负喜欢是否是另一个字符串旋转所得;杨氏矩阵中查找一个数。
////求数组(元素可为正数,负数,0)的最大子序列和。////#include//#include////int get_max_sum(int *arr, int len)//{//int max = arr[0];//int sum = 0;//while (len--)//{//sum += *arr++;//if (原创 2016-08-15 19:03:21 · 405 阅读 · 0 评论 -
顺序表和链表的相关热点面试题
一,比较顺序表和链表的优缺点,说说他们分别在什么场景下使用? 1,顺序表支持随机访问,单链表不支持原创 2016-08-21 18:30:10 · 327 阅读 · 0 评论 -
在终端输入多行信息,找出包含“ould”的行,并打印改行。
如:输入:Au,love could youand I with fate conspireTo grasp this sorryscheme of things entire,Would not we shatterit to bitd - and then.输出:Au,love could youand I with fate conspire含原创 2016-08-06 14:23:51 · 343 阅读 · 0 评论 -
数字黑洞
任取一个四位数,只要四个数字不全相同,按数字递减顺序排列,构成最大数作为被减数;按数字递增顺序排列,构成最小数作为减数,其差就会得6174;如不是6174,则按上述方法再作减法,至多不过7步就必然得到6174。如取四位数5679,按以上方法作运算如下:9765-5679==4086,8640-0486=8172,8721-1278=7443, 7443-34原创 2016-08-02 01:32:54 · 327 阅读 · 0 评论 -
网易练习题,专辑问题
你作为一名出道的歌手终于要出自己的第一份专辑了,你计划收录 n 首歌而且每首歌的长度都是 s 秒,每首歌必须完整地收录于一张 CD 当中。每张 CD 的容量长度都是 L 秒,而且你至少得保证同一张 CD 内相邻两首歌中间至少要隔 1 秒。为了辟邪,你决定任意一张 CD 内的歌数不能被 13 这个数字整除,那么请问你出这张专辑至少需要多少张 CD ?输入描述: 每组测试用例仅包含一组数据原创 2016-08-02 16:25:17 · 553 阅读 · 0 评论 -
C语言总复习第二阶段部分练习题
#define _CRT_SECURE_NO_WARNINGS 1// 求斐波那契数列//#include//#include//#include////void Fibonacci(int n)//{// assert(n >= 0);// int f1 = 1;// int f2 = 1;// int val = 0;// if (n =原创 2016-08-07 22:01:32 · 458 阅读 · 4 评论 -
判断两个链表是否相交,若相交,求交点。
第一种情况:两个链表均不含有环思路:1、直接法采用暴力的方法,遍历两个链表,判断第一个链表的每个结点是否在第二个链表中,时间复杂度为O(len1*len2),耗时很大。2、hash计数法以链表节点地址为值,遍历第一个链表,使用Hash保存所有节点地址值,结束条件为到最后一个节点(无环)或Hash中该地址值已经存在(有环)。再遍历第二个原创 2016-08-27 22:06:41 · 505 阅读 · 0 评论 -
元素出栈、入栈顺序的合法性
如入栈的序列(1,2,3,4,5),出栈序列为(4,5,3,2,1)先把1,2,3,4压入栈,再把4弹出,再把5压入,最后依次弹出5,3,2,1#define _CRT_SECURE_NO_WARNINGS 1#include#include#include#includeusing namespace std;templatebool CheckSta原创 2016-09-10 21:50:49 · 439 阅读 · 0 评论 -
C++一个数组实现两个栈
方案一:将数组的下标为0的位置当做第一个栈的栈底,下标为1的位置当做第二个栈的栈底,将数组的偶数位置看做第一个栈的存储空间,奇数位置看做第二个栈的存储空间。方案二:从中间分别向两边压栈将数组的中间位置看做两个栈的栈底,压栈时栈顶指针分别向两边移动,当任何一边到达数组的起始位置或是数组尾部,则开始扩容。方案三:从两边向中间压栈将数组的起始位置看原创 2016-09-10 22:14:36 · 1206 阅读 · 0 评论 -
c++复习1练习题极其代码
#define _CRT_SECURE_NO_WARNINGS 1//#include//#include////using namespace std;//int Add1(int a = 0, int b = 0)//{// return a + b;//}////int Add2(int a, int b = 0)//{// retur原创 2016-08-30 23:20:37 · 232 阅读 · 0 评论 -
C语言总复习第一阶段部分练习题及其代码
#define _CRT_SECURE_NO_WARNINGS 1//#include//#include//int main()//{// int i = 43;// printf("%d\n", i);// printf("%d\n", printf("%d", i));//432// printf("%d\n", printf("%d", printf原创 2016-07-24 15:15:50 · 348 阅读 · 0 评论 -
单链表的增删查改(C++实现)
Slist.h:#pragma once #includeusing namespace std;typedef int DataType;struct Node{Node(const DataType& d):_date(d), _next(NULL){}DataType _date;struct Node* _ne原创 2016-08-21 18:02:34 · 3218 阅读 · 0 评论 -
顺序表的建立及增删查改
#define _CRT_SECURE_NO_WARNINGS 1#include#include#include#include#include//顺序表的静态存储#define MAX_SIZE 100typedef struct SeqList{int arr[MAX_SIZE];size_t size;}SeqList, *原创 2016-08-20 01:31:25 · 426 阅读 · 0 评论 -
C++实现搜索二叉树
二叉搜索树的性质:每个节点都有一个作为搜索依据的关键码(key),所有节点的关键码互不相同。左子树上所有节点的关键码(key)都小于根节点的关键码(key)。右子树上所有节点的关键码(key)都大于根节点的关键码(key)。左右子树都是二叉搜索树。#define _CRT_SECURE_NO_WARNINGS 1#include#includeusin原创 2016-09-21 00:46:55 · 2594 阅读 · 2 评论