C++类基本的class语法初始化列表:传统的 :storedValue(initialValue){ } c++11 :storedValue {initialValue} { }explicit 构造函数 :应该让所有的单参数构造函数为explicit的,避免后台类型转换(behind-the-scenes type conversions),例如以下代码: intcell boj; obj = 37; obj是一个对象,37是一个值,左右不同,正常来说不能赋值。但是c++标准有...
最近一直忙着考研复习,很久都没有更新博客了,今天写一篇数据结构的存储。//有向图的十字链表存储表示
//杨鑫
#include <iostream>
#include <cstdio>
#include <stdlib.h>
#include <cstring>
using namespace std;
#define MAX_VERTEX_NUM 20
#define OVERFLOW -2
#define OK 1
typedef int Status;
typedef char VertexType[MAX_VERTEX_NUM];
typedef char InfoType;
//弧(边)的结构体
typedef struct ArcBox
{int tailvex,h...
红黑树的实现还真不简单,各种染色旋转足足折腾了笔者几天。。 不过收获也是巨大的。笔者现在终于明白为啥二叉搜索树这么重要了,确实很有用。 下面上代码。 细心的朋友可能会觉得似乎少了那么几个接口,没错,因为 Precessor(求前驱) / Successor(求后继) / getMaximum (求树中最大值)/ getMinimum(求树中最小值)/ Inorder Traversal(中序遍历)/ Postorder Traversal(后序遍历) 这些操作都可以直接用笔者二叉...
【送给在路上的程序员】对于一个开发者而言,能够胜任系统中任意一个模块的开发是其核心价值的体现。对于一个架构师而言,掌握各种语言的优势并可以运用到系统中,由此简化系统的开发,是其架构生涯的第一步。对于一个开发团队而言,能在短期内开发出用户满意的软件系统是起核心竞争力的体现。每一个程序员都不能固步自封,要多接触新的行业,新的技术领域,突破自我。数组与指针#include<stdio.h>
#include<stdlib.h>void main1()...
1.临时变量的访问速度远远大于成员变量。2.C++中唯一一种函数返回值可以做左值的就是引用,本质上也是指针。3.成员函数末尾加const,表示只读成员函数,不能修改成员变量的值。只读成员函数仅仅用于只读对象调用。4.只读成员变量只能在构造函数初始化列表中进行赋值。5.普通全局变量可以跨文件,用extern关键字来引用,static全局变量不可以。6.类内静态成员变量只是名义上属于类,类空间并不包括静态成员变量,静态成员变量的地址...
声明 :仅一张图片转载于http://www.cnblogs.com/shuaiwhu/archive/2012/04/22/2464583.html,自己画太麻烦了。。。那个博客的讲解也很好,只是他用了指针的方式来定义线段树,而我用了结构体,并且他讲了线段树的更高级的操作,若对线段树的初级操作不理解,请继续阅读线段树作为一种十分常用的数据结构,在NOIP、NOI中广泛的出现,所以在这里对线段树进行简单的讲解。 线段树支持对一个数列的求和、单点修改、求最值(最大...
1.我们为什么要用动态数据数据结构呢?因为类型相同的数据用数组存储存在许多的问题:
(1)定义静态数组时必须指定数组的元素个数,此后无法更改数组大小,带来很多的不便,可能造成空间浪费或不足。
(2)用指针可以申请动态数组,空间不会浪费或不足,由于动态申请的空间必须是连续的区域,所以当申请“大片”的连续区域时,有可能会失败。
(3)在数组中插入或删除元素时需要大量移动元素,效率低。所以动态数据结构就出现了!态数据...
这是一篇顺序表数据结构——动态数组的测试,实现//初始化数组//插入//根据位置删除//根据值删除//查找//打印//释放动态数组的内存//清空数组//获得动态数组容量//获得动态数组当前元素个数//根据位置获得某个位置的元素话不多说 上代码!!!//DynamicArray.h#pragma once
#ifndef DynamicArraytypedef struct DynamicArray
{int size;//当前数组有多少个元素int capacity; //数组的容量int *pArray; //数据存放的地址}DynamicA...
线性表中,先进先出的叫队列,先进后出的叫栈。队列常用于BFS,而在函数递归层数过高时,需要手动实现递归过程,这时候便需要写一个“手动栈”。 有时候,我们会有大量数据频繁出入队列,但同时存在其内的元素却不多,此时需要写“循环队列”。其代码并不难,但里面下标递增的语句值得斟酌一下。k=(k+1)%maxn; 这句话用到了取模运算%,是非常浪费时间的。若能避免使用%,则可以大大提高代码运行速度。我做了一个测...
广义表,相对于链表较复杂,相对于树又较简单....用来过渡顺序表和树是非常好的选择. 废话不多说,一言不合就贴代码./*
*文件说明:广义表相关声明及定义
*作者:高小调
*日期:2016-12-12
*集成开发环境:Microsoft Visual Studio 2010
*/
#ifndef __GENERALLIST_H__
#define __GENERALLIST_H__
#include<assert.h>
enum Type{HEAD,SUB,VALUE
};
struct GeneralListNode{Type type;union{char value;GeneralListNode *sublink;};Gene...
#ifndef __MY_SEQLIST_H__
#define __MY_SEQLIST_H__typedef void SeqList;
typedef void SeqListNode;//链表 创建
SeqList* SeqList_Create(int capacity);//链表 销毁void SeqList_Destroy(SeqList* list);////链表 清空void SeqList_Clear(SeqList* list);//链表 长度int SeqList_Length(SeqList* list);//链表 容量 int SeqList_Capacity(SeqList* list);//链表 在某一个位置 插入元素int SeqList_Insert(SeqList* list, Seq...
单链表的建立 本题要求实现一个函数,将两个链表表示的递增整数序列合并为一个非递减的整数序列。输入以-1 作为结束 1 #include<bits/stdc++.h>2usingnamespace std;3 4 typedef struct LNode *List;5struct LNode6{7int data;8 LNode *next; 9 };
1011void InitList(List &L)
12{
13 L = new LNode;
14 L->next = NULL;
15}
1617void CreatList(List &L)
18{
19 List r,s;
20 s = L;
21int a;
22while(1...
#include <iostream>
#include <unordered_map>
usingnamespace std;
class Book
{
private:string num;string name;
public:Book() {};Book(string num,string name) { this ->name = name;this ->num = num;};string getNum() { return num;};string getName() { return name;};
};
int main()
{unordered_map<string,Book>lib;Book b("001","高级语言程序设计") ;lib[b.getNum()] = b;unordered_map<string,Book>::iterator it;...
T1 1806:词典描述你旅游到了一个国外的城市。那里的人们说的外国语言你不能理解。不过幸运的是,你有一本词典可以帮助你。输入首先输入一个词典,词典中包含不超过100000个词条,每个词条占据一行。每一个词条包括一个英文单词和一个外语单词,两个单词之间用一个空格隔开。而且在词典中不会有某个外语单词出现超过两次。词典之后是一个空行,然后给出一个由外语单词组成的文档,文档不超过100000行,而且每行只包括一个外语单词。...
1. 广义表的定义 每个元素可以为Atom,原子,也可以为线性表。 线性表的推广。线性表元素有唯一的前驱和后继,为线性表,而广义表是多层次的线性表 表头:第一个元素,可能是原子,可能是广义表 表尾:除了第一个元素,剩余的元素,所构成的广义表 举例: A = (a,b,(c,d),e) head(A) = a tail(A) = (b,(c,d),e) 遍历操作: 取表头,取表尾 ,取表头.. 长度:最外层的...