C++
文章平均质量分 75
hanjing_1995
Just do IT
展开
-
C语言:单链表的实现(包括:尾插、尾删、头插、头删、指定位置插入、长度、打印)
#define _CRT_SECURE_NO_WARNINGS 1#include#include#include#includetypedef int DataType;typedef struct SListNode{ DataType _data; struct SListNode* _next;}SListNode;SListNode* _Cre原创 2016-05-30 17:16:05 · 351 阅读 · 0 评论 -
C语言:【动态顺序表】动态顺序表的在指定位置插入元素Insert,以及指定元素Find
#include#include#include#include#includetypedef int DateType;typedef struct SeqList{ DateType *arr; size_t capacility; size_t size;}SeqList;//创建空间void CheckCapa(SeqList *Seq){原创 2016-05-30 17:17:30 · 573 阅读 · 0 评论 -
【String类浅拷贝的实现】C++:String类引用计数浅拷贝的两种实现
第一种: 只采用_str一个变量,利用强制转换前后偏移,获取存取计数的位置,以及存放字符串的位置。#include#include#includeusing namespace std;class String{public: String(char* str = "") :_str(new char[strlen(str) + 5]) {原创 2016-05-30 17:17:36 · 211 阅读 · 0 评论 -
【String类】C++:String类的传统写法与现代写法
传统写法:#include#includeusing namespace std;class String{public: //构造函数是用系统传入的str去构造_STR String(char* str = "") :_str( new char[strlen(str) + 1]) { strcpy(_str, str);原创 2016-05-30 17:17:39 · 232 阅读 · 0 评论 -
【C++】实现动态顺序表的PushBack(),PopBack(),PushFront(),PopFront(),Find(),Insert
建立源文件SeqList.cpp:#define _CRT_SECURE_NO_WARNINGS 1#include"SeqList.h"int main(){ Test(); system("pause"); return 0;}建立源文件SeqList.h:#ifndef __SEQLIST_H__#define __SEQLIST_H__#inclu原创 2016-05-30 17:17:42 · 822 阅读 · 0 评论 -
【C++】用类实现单向单链表的尾插PushBack(),尾删PopBack(),打印PrintSlist()。
建立源文件,命名为:Slist.cpp。#include"Slist.h"int main(){ Test(); system("pause"); return 0;}建立头文件,命名为:Slist.h。#ifndef __SLISH_H__#define __SLIST_H__#includeusing namespace std;typedef in原创 2016-05-30 17:17:45 · 715 阅读 · 0 评论 -
【C++】实现双向链表的所有操作,包括逆置双链表(三种方法)
建立源文件List.cppinclude "List.h"int main(){ Test(); system("pause"); return 0;}建立头文件List.h#ifndef __LISH_H__#define __LISH_H__#includeusing namespace std;typedef int DataType;struc原创 2016-05-30 17:17:48 · 1081 阅读 · 0 评论 -
【C语言】单链表的所有操作的实现(包括PopBack、PushBack、PopFront、PushFront、Insert)
#define _CRT_SECURE_NO_WARNINGS 1#includeusing namespace std;//单链表的实现#includetypedef int DataType;typedef struct SListNode{ DataType _data; struct SListNode* _next;}SListNode;S原创 2016-05-30 17:17:51 · 686 阅读 · 0 评论 -
【继承与多态】C++:继承中的赋值兼容规则,子类的成员函数,虚函数(重写),多态
实现基类(父类)以及派生类(子类),验证继承与转换--赋值兼容规则:子类对象可以赋值给父类对象(切割/切片)父类对象不能赋值给子类对象父类的指针/引用可以指向子类对象子类的指针/引用不能指向父类对象(可以通过强制类型转换完成)#includeusing namespace std;class People //父类或者基类{public: void Display()原创 2016-05-30 17:17:54 · 401 阅读 · 0 评论 -
【C++】模版类实现普通类静态顺序表
在C或C++里,我们已经学会了如何实现一个静态顺序表了,那为何还要引入模版类来实现静态顺序表呢?首先,我们看,在未引入模版前,我们在C++里是这样定义一个静态顺序表的:typedef int DataType; //此时我定义的是int型class SeqList{ DataType* _array; size_t _size; size_t _capacity原创 2016-05-30 17:17:57 · 267 阅读 · 0 评论 -
【C++】认识模版函数
模板是泛型编程的基础。所谓泛型编程就是编写与类型无关的逻辑代码,是一种复用的方式。模板分为模板函数和模板类。 首先,我们不使用模版函数,该函数用来实现比较两个数是否相等。bool IsEqual(int left, int right)//--->int型{ return left == right;}bool IsEqual(const string& left, cons原创 2016-05-30 17:18:00 · 218 阅读 · 0 评论 -
【C++】模版实现双向链表的各种操作(如:逆置、去重Unique、分类(冒泡)、合并)
在cplusplus.com里,我们可以搜索list来查看库是如何实现双向链表的。当然,我们也可以在平时使用时包上头文件list来调用C++里的list库。在这里,我今天就不再赘述用C语言或者C++未引入模版这两种场景来向大家分享双向链表了,而是注重多类型都可以使用双向链表。也就是我们今天的主题:模版实现双向链表。我主要实现了尾插、尾删、打印、去重、逆置等等一系列操作,而关于像Insert()、E原创 2016-05-30 17:18:03 · 354 阅读 · 0 评论 -
【C++】容器适配器实现栈Stack的各种功能(入栈、出栈、判空、大小、访问所有元素等)
容器适配器实现栈Stack的各种功能:我们知道,顺序表的特点是:相对比于链表插入和删除数据方便,无需像链表一样遍历来访问。因此,我们用容器适配器选择顺序表的模型来实现栈的各种功能。#includeusing namespace std;#includetemplateclass SeqList{private: T* _array; size_t _size;原创 2016-05-30 17:18:06 · 361 阅读 · 0 评论 -
【C++】容器适配器实现队列Queue的各种功能(入队、出队、判空、大小、访问所有元素等)
适配器:将一个通用的容器转换为另外的容器,所谓的容器,指的是存放数据的器具,像我们知道的顺序表和链表都是容器Container。举个例子解释一下吧,我们的电压都是220v,而像充电线就起到转换到合适的电压的作用。而这里,我们的主角就是将通用的链表结构转换为来实现队列Queue这一数据结构,(意思就是,链表还可以去实现其他的数据结构)。在线性表中,分为链表和顺序表,我们知道其中的差别:链表:节点灵活原创 2016-05-30 17:18:10 · 1806 阅读 · 0 评论 -
【C++】类型萃取技术实现静态顺序表
类型萃取是一种常用的编程技巧,其目的是实现不同类型数据面对同一函数实现不同的操作,它与类封装的区别是,我们并不用知道我们所调用的对象是什么类型,类型萃取是编译后知道类型,先实现,而类的封装则是先定义类型,后实现方法。在这里我们可以用模板的特化实现其编程思想。我们以memcpy为例,当我们拷贝的是基本类型时,只用拷贝所传递指针上的数据,如果是string类型呢,我们则需要在堆上开辟空间,所传递的指原创 2016-05-30 17:18:15 · 242 阅读 · 0 评论 -
【C++】智能指针的作用,模拟实现auto_ptr,scoped_ptr,shared_ptr,scoped_array,shared_array
RAII(Resource Acquisition Is Initialization):资源分配即初始化,定义封装一个类,用来实现调用构造函数时就可完成资源的分配和初始化,在调用析构函数就可完成资源的清理,以实现对资源的初始化和清理。智能指针:用自动化或者说智能的指针来实现对动态内存的释放。它是一个类,有类似指针的功能。常见的智能指针有:auto_ptr/scoped_ptr/scoped_ar原创 2016-05-30 17:18:19 · 338 阅读 · 0 评论 -
C语言:【动态顺序表】动态顺序表的初始化、打印、尾插PushBack、尾删PopBack
#include#include#include#include#includetypedef int DateType;typedef struct SeqList{ DateType *arr; size_t capacility; size_t size;}SeqList;//创建空间void CheckCapa(SeqList *Seq)原创 2016-05-30 17:17:27 · 393 阅读 · 0 评论 -
c语言:【顺序表】静态顺序表的删除指定位置元素Erase、删除指定元素Remove
#define _CRT_SECURE_NO_WARNINGS 1#include#include#include#include#define MAXSIZE 1000typedef int DateType;typedef struct SeqList{ DateType arr[MAXSIZE]; size_t size;}SeqList;//打印原创 2016-05-30 17:17:24 · 822 阅读 · 0 评论 -
c语言:【顺序表】静态顺序表的在指定位置插入元素,以及查找指定元素
#define _CRT_SECURE_NO_WARNINGS 1#include#include#include#include#define MAXSIZE 1000typedef int DateType;typedef struct SeqList{ DateType arr[MAXSIZE]; size_t size;}SeqList;//打印原创 2016-05-30 17:17:21 · 1579 阅读 · 0 评论 -
C语言:【单链表】删除一个无头单链表的非尾节点
#include#include#includetypedef int DataType;typedef struct SListNode{ DataType data; struct SListNode* next; }SListNode;SListNode* BuyNode( DataType x){ SListNode* next = (SLis原创 2016-05-30 17:16:08 · 268 阅读 · 0 评论 -
C语言:【单链表】在无头单链表的一个非头节点前插入一个节点
#include#include#includetypedef int DataType;typedef struct SListNode{ DataType data; struct SListNode* next;}SListNode;SListNode* BuyNode(DataType x){ SListNode* next = (SListN原创 2016-05-30 17:16:12 · 368 阅读 · 0 评论 -
C语言:【单链表】逆置反转单链表
#include#include#includetypedef int DataType;typedef struct SListNode{ DataType data; struct SListNode* next;}SListNode;SListNode* BuyNode(DataType x){ SListNode* next = (SListN原创 2016-05-30 17:16:14 · 413 阅读 · 0 评论 -
C语言:【单链表】查找单链表的中间节点,要求只能遍历一次
#include#include#includetypedef int DataType;typedef struct SListNode{ DataType data; struct SListNode* next;}SListNode;SListNode* BuyNode(DataType x){ SListNode* next = (SListN原创 2016-05-30 17:16:18 · 996 阅读 · 0 评论 -
C语言:【单链表】查找单链表的倒数第k个节点,要求只能遍历一次
#include#include#includetypedef int DataType;typedef struct SListNode{ DataType data; struct SListNode* next;}SListNode;SListNode* BuyNode(DataType x){ SListNode* next = (SListN原创 2016-05-30 17:16:20 · 509 阅读 · 0 评论 -
C++:复数类构造函数、拷贝构造、运算符重载、析构函数
#define _CRT_SECURE_NO_WARNINGS 1#includeusing namespace std;class Complex{public: void Set(double real, double image) { _real = real; _image = image; } //构造函数原创 2016-05-30 17:16:23 · 2188 阅读 · 0 评论 -
C++【面试题】:类实现万年历(日期计算器),(含构造函数、拷贝构造、运算符重载、析构函数)
#define _CRT_SECURE_NO_WARNINGS 1#include#includeusing namespace std;class Date{public: Date(int year=0, int month=0, int day=0) :_year(year) , _month(month) , _day(day) {原创 2016-05-30 17:16:26 · 391 阅读 · 0 评论 -
C语言【顺序表】冒泡排序,一次选出最大最小的数据,二分查找,初始化顺序表
#define _CRT_SECURE_NO_WARNINGS 1#include#include#include#include#define MAX_SIZE 5typedef int DataType;typedef struct SeqList{ size_t size; DataType array[MAX_SIZE];}SeqList;//冒原创 2016-05-30 17:16:29 · 749 阅读 · 0 评论 -
C语言【顺序表】顺序表的初始化,头插,尾插,头删,尾删,增删查改,全删
#define _CRT_SECURE_NO_WARNINGS 1#include#include#include#include#define MAX_SIZE 5typedef int DataType;typedef struct SeqList{ size_t size; DataType array[MAX_SIZE];}SeqList;//vo原创 2016-05-30 17:16:33 · 586 阅读 · 0 评论 -
C++:【常见面试题】String类的写法
#include#includeusing namespace std;class String{public: String(const char* str) :_str(new char[strlen(str) + 1]) // \0 { strcpy(_str, str); } String(const Str原创 2016-05-30 17:16:36 · 283 阅读 · 0 评论 -
C++【String类】String查找单个字符,查找字符串的函数实现
#include#include#includeusing namespace std;class String{public: String(const char* str) :_str(new char[strlen(str) + 1]) { _size = strlen(str); _capacity = _siz原创 2016-05-30 17:16:39 · 3765 阅读 · 0 评论 -
C++【String类】String删除单个字符,删除字符串的函数实现
#include#include#includeusing namespace std;class String{public: String(const char* str) :_str(new char[strlen(str) + 1]) { _size = strlen(str); _capacity = _siz原创 2016-05-30 17:16:41 · 2401 阅读 · 0 评论 -
C++【String类】String插入单个字符,插入字符串的函数实现
#include#include#includeusing namespace std;class String{public: String(const char* str) :_str(new char[strlen(str) + 1]) { _size = strlen(str); _capacity = _siz原创 2016-05-30 17:16:45 · 6168 阅读 · 0 评论 -
C++【String类】String头插单个字符,头删单个字符的函数实现
#include#include#includeusing namespace std;class String{public: String(const char* str) :_str(new char[strlen(str) + 1]) { strcpy(_str, str); _size = strlen(_st原创 2016-05-30 17:16:47 · 2078 阅读 · 0 评论 -
C++【常见面试题】String类的实现,以及深拷贝、浅拷贝问题
浅拷贝:实现不了,由于两个指针指向同一块空间,则空间释放时会释放两次,导致程序奔溃。这也是深拷贝与之不同要改进的地方。 深拷贝:重新开辟空间,将原来的空间拷贝过来,再把值复制过来。(采用String的现代写法)深拷贝:#include#includeusing namespace std;class String{public: String(const char* st原创 2016-05-30 17:16:51 · 442 阅读 · 0 评论 -
C++三大特性之多态性
1.多态的概念多态性可以简单地概括为“一个接口,多种方法”,程序在运行时才决定调用的函数,它是面向对象变成领域的核心概念。多态(polymorphion),就是多种形态。2.多态的实现(晚绑定-->虚函数)C++多态性是通过虚函数来完成的,徐哈市南湖允许子类重新定义成员函数,而子类重新定义父类的做法称为“覆盖”,或者为“重写”。重写可以有两种:直接重写成员函数和重写虚函数,只有重写了虚函数的话才能是体现了C++多态性。多态和非多态的实质区别在于函数地址是早绑定还是晚绑定。如果是函数调用,在编译器转载 2016-08-19 08:27:21 · 497 阅读 · 0 评论