
C++
WUYANGEZRA
Python
展开
-
Dijkstra算法-用C语言描述
#define _CRT_SECURE_NO_WARNINGS#define ERROR -1#include<stdio.h>#include<stdlib.h>#define MaxVertexNum 100 /* 最大顶点数设为100 */#define INFINITY 65535 /* ∞设为双字节无符号整数的最大值65535 */typedef int Vertex; /* 用顶点下标表示顶点,为整型 */typedef int WeightType; .原创 2021-01-27 22:21:13 · 439 阅读 · 0 评论 -
Prim算法-用C语言描述
#define _CRT_SECURE_NO_WARNINGS#define ERROR -1#include<stdio.h>#include<stdlib.h>#define MaxVertexNum 100 /* 最大顶点数设为100 */#define INFINITY 65535 /* ∞设为双字节无符号整数的最大值65535 */typedef int Vertex; /* 用顶点下标表示顶点,为整型 */typedef int WeightType; .原创 2021-01-26 23:15:46 · 378 阅读 · 0 评论 -
图的遍历(邻接表)-用C语言描述
#define _CRT_SECURE_NO_WARNINGS#define MaxVertexNum 100 /* 最大顶点数设为100 */#include<stdio.h>#include<stdlib.h>typedef int Vertex; /* 用顶点下标表示顶点,为整型 */typedef int WeightType; /* 边的权值设为整型 */typedef char DataType; /* 顶点存储的数据类型设为字符型 *//*图.原创 2021-01-24 14:14:18 · 682 阅读 · 0 评论 -
图的遍历(邻接矩阵)-用C语言描述
#define _CRT_SECURE_NO_WARNINGS#include<stdio.h>#include<stdlib.h>#define MaxVertexNum 100 /* 最大顶点数设为100 */#define INFINITY 65535 /* ∞设为双字节无符号整数的最大值65535 */typedef int Vertex; /* 用顶点下标表示顶点,为整型 */typedef int WeightType; /* 边的权值设为整型 */ty.原创 2021-01-24 00:12:59 · 501 阅读 · 0 评论 -
二叉搜索树-用C语言描述
#define _CRT_SECURE_NO_WARNINGS#include<stdio.h>#include<stdlib.h>typedef int ElementType;const int MAXSIZE = 1000;ElementType NoInfo = 0; /*用0表示没有结点*//*============================结构体===========================================*//*.原创 2021-01-23 20:17:34 · 239 阅读 · 0 评论 -
二叉树非递归遍历-用C语言描述
#define _CRT_SECURE_NO_WARNINGS#define MAXSIZE 100#include<stdio.h>#include<stdlib.h>typedef int ElementType;ElementType NoInfo = 0; /*用0表示没有结点*//*============================结构体===========================================*//*二叉树最常用.原创 2021-01-23 12:31:52 · 259 阅读 · 0 评论 -
递归遍历二叉树-用C语言描述
#define _CRT_SECURE_NO_WARNINGS#include<stdio.h>#include<stdlib.h>typedef int ElementType;ElementType NoInfo = 0; /*用0表示没有结点*//*============================结构体===========================================*//*二叉树最常用的表示方法是用链表表示,每个结点由数据和.原创 2021-01-22 00:07:14 · 177 阅读 · 0 评论 -
链式存储队列-用C语言描述
#include<stdio.h>#include<stdlib.h>/*队列的链式存储队列的头(Front)必须指向链表的头结点,队列的尾(Rear)指向链表的尾结点*/typedef int ElementType;ElementType ERROR = -1;typedef struct Node *PtrToNode;/*队列中的结点*/struct Node{ ElementType Data; PtrToNode Next;};t.原创 2021-01-22 00:05:49 · 268 阅读 · 0 评论 -
顺序存储队列-用C语言描述
#include<stdio.h>#include<stdlib.h>/*队列的顺序存储(循环队列)方法:少用一个元素空间。*/typedef int ElementType;typedef int Position;typedef struct QNode * PtrToNode;struct QNode{ ElementType * Data; /*存储元素的数组*/ Position Front, Rear; /*队列的头、尾指针*/ in.原创 2021-01-22 00:03:35 · 344 阅读 · 0 评论 -
链栈-用C语言描述
#include<stdio.h>#include<malloc.h>/*堆栈的链式存储实现为了简化算法,链栈也可以带一空的表头结点,表头结点后面的第一个结点就是链栈的栈顶结点。栈中的其他结点通过它们的指针Next链接起来,栈底结点的Next为NULL。*/typedef struct SNode *PtrToSNode;typedef int ElementType;ElementType ERROR = -1;struct SNode{ Elem.原创 2021-01-20 22:25:22 · 175 阅读 · 0 评论 -
双堆栈-用C语言描述
#include<stdio.h>#include<malloc.h>/*双堆栈双堆栈的结构只比标准堆栈多了一个栈顶指针-使两个栈分别从数组的两头开始向中间生长;当两个栈的栈顶指针相遇时,表示两个栈都满了。-此时,最大化地利用了空间*/typedef int Position;typedef int ElementType;typedef struct SNode * PtrToSNode;struct SNode{ ElementType *Data;.原创 2021-01-20 21:49:51 · 490 阅读 · 0 评论 -
堆栈-用C语言描述
#include<stdio.h>#include<malloc.h>/*堆栈顺序存储*/typedef int Position;typedef int ElementType;typedef struct SNode *PtrToSNode;ElementType ERROR = -1;struct SNode{ ElementType *Data; /*存储元素的数组*/ Position Top; /*栈顶指针*/ int MaxSi.原创 2021-01-20 21:48:09 · 268 阅读 · 0 评论 -
C语言输入方法比较
比较输入方法:scanf - getchar - gets#define _CRT_SECURE_NO_WARNINGS#include<stdio.h>/*比较输入方法:scanf - getchar - gets*/void test() { /*getchar()*/ char ch1, ch2; ch1 = getchar(); ch2 = getchar(); printf("%d %d\n", ch1, ch2); /* 输入a enter.原创 2021-01-18 23:04:44 · 212 阅读 · 0 评论 -
C语言基础-运算符-小练习
扫地机器人: 机器人控制变量x=0110 1111 功能: (1) 扫地:第2位清0 (2) 拖地:第4位置1 (3) 吸尘:第6位取反#include<stdio.h>/*扫地机器人: 机器人控制变量x=0110 1111 功能: (1) 扫地:第2位清0 (2) 拖地:第4位置1 (3) 吸尘:第6位取反*/void print_2(int x);void saodi(int x);void tuodi(int x);...原创 2021-01-09 14:34:33 · 431 阅读 · 0 评论 -
C语言基础-运算符
#include<stdio.h>void wei();void yiwei();void sanmu();void changdu();int main() { wei(); sanmu(); changdu(); yiwei(); return 1;}void wei() { printf("\n==============位运算=============\n"); /* 位运算 反码 正数的反码是其本身 负数的反码是在其原码的基础上,.原创 2021-01-08 21:56:29 · 198 阅读 · 0 评论 -
C++-友元类
友元类 A friend class in C++ can access the private and protected members of the class in which it is declared as a friend. A significant use of a friend class is for a part of a data structure, repr...翻译 2018-12-04 15:55:45 · 1286 阅读 · 0 评论 -
C++ Primer Plus(6th edition) 第12章编程练习题
1.对于下面的类声明class Cow{char name[20];char * hobby;double weight;public:Cow();Cow(const char*nm, const char * ho, double wt);Cow(const Cow &c);~Cow();Cow & operator=(const Cow &c);...原创 2018-10-16 13:54:40 · 326 阅读 · 0 评论 -
C++ Primer Plus(6th edition)课后习题第11章使用类
1.修改程序清单11.5,使之将一系列连续的随机漫步者位置写入到文件中。对于每个位置,用步号进行标志。另外,让该程序将初始条件(目标距离和步长)以及结果小结写入到该文件中。该文件的内容与下面类似:Target Distance: 100, Step Size: 200: (x,y) = (0, 0)1: (x,y) = (-11.4715, 16.383)2: (x,y) = (-8688...原创 2018-10-15 22:05:27 · 560 阅读 · 0 评论 -
C++名称空间
名称空间(1) 传统的C++名称空间。术语:1. 声明区域(declaration region): 可以在其中进行声明的区域。 例如,可以在函数外面声明全局变量,对于这种变量,其声明区域为其声明所在的文件中。对于在函数中声明的变量,其声明区域为其声明所在的代码块。2. 潜在作用域(potential scope): 变量的潜在作用域从声明点开始,到其声明区域的结尾。 因此潜在...翻译 2018-06-30 14:27:27 · 225 阅读 · 0 评论 -
C++-对象和类
对象和类(1) C++中的类类是一种将抽象转换为用户定义类型的C++工具,它将数据表示和操纵数据的方法组合成一个整洁的包。如下头文件看起来像一个结构声明,只是还包括成员函数、公有部分和私有部分等内容。//stock00.h -- 股票类接口//version 00#ifndef STOCK00_H_#define STOCK00_H_#include<string>cla...翻译 2018-07-02 19:45:31 · 171 阅读 · 0 评论 -
C++-对象和类(进阶)
对象和类(进阶)(1) 类的构造函数和析构函数1. C++提供了一个特殊的成员函数-类构造函数,专门用于构造新对象、将值赋给它们的数据成员。构造函数的原型和函数头有一个有趣的特征-虽然没有返回值,但没有被声明为void类型。 实际上,构造函数没有声明类型。Stock(const std::string & co, long n = 0, double pr = 0.0);该原...翻译 2018-07-03 16:32:29 · 321 阅读 · 0 评论 -
C++-类和动态内存分配-进阶 -2
C++-类和动态内存分配-进阶 -2 (1) 在构造函数中使用new时应注意的事项注意:a.如果在构造函数中使用new来初始化指针成员,则应在析构函数中使用delete。b.new和delete必须相互兼容。 new对应于delete,new[]对应于delet...翻译 2018-07-17 15:50:16 · 352 阅读 · 2 评论 -
C++-类和动态内存分配-进阶
类和动态内存分配-进阶(1) 改进后的新String类新String类将添加以下方法:int length () const {return len;}friend bool operator<(c...翻译 2018-07-16 16:22:47 · 500 阅读 · 0 评论 -
C++-类和动态内存分配
类和动态内存分配1. 动态内存和类C++在分配内存时是让程序在运行时决定内存分配,而不是在编译时决定。 这样,可根据程序的需要,而不是根据一系列严格的存储类型规则来使用内存。C++使用new和delete运算符来动态控制内存。1.1. 复习示例和静态类成员这个程序使用了一个新的存储类型:静态类成员。//strngbad.h#include<ios...翻译 2018-07-13 13:47:35 · 3774 阅读 · 0 评论 -
C++-使用类(类的自动转换和强制类型转换)
使用类-类的自动转换和强制类型转换 可以将类定义成与基本类型或另一个类相关,使得从一种类型转换为另一种类型是有意义的。 在这种情况下,程序员可以指示C++如何自动进行转换,或通过强制类型转换来完成。(1) stonewt.h //stonewt.h #ifndef STONEWT_H_#define STONEWT_H_class Stonewt{private: ...翻译 2018-07-11 22:12:10 · 3726 阅读 · 0 评论 -
C++-使用类(作为成员函数还是非成员函数)
使用类(3) 重载运算符: 作为成员函数还是非成员函数对于很多运算符来说,可以选择使用成员函数或非成员函数来实现运算符重载。 一般来说,非成员函数应是友元函数,这样它才能直接访问类的私有数据。 例如,Time类的加法运算符在Time类声明中的原型如下:Timeoperator+(constTime & t) const; //成员函数版本这个类也可以使用下面的原型:...翻译 2018-07-06 21:26:44 · 5354 阅读 · 0 评论 -
C++-使用类(友元)
使用类(2) 友元C++控制对类对象私有部分的访问。 通常,公有类方法提供唯一的访问途径,但是有时候这种限制太严格,以至于不适合特定的编程问题。 在这种情况下,C++提供了另外一种形式的访问权限:友元。通过让函数成为类的友元,可以赋予该函数与类的成员函数相同的访问权限。1. 创建友元创建友元函数的第一步时将其原型放在类声明中,并在原型声明前加上关键字friend:f...翻译 2018-07-05 22:25:03 · 600 阅读 · 0 评论 -
C++-使用类(运算符重载)
使用类(1) 运算符重载:运算符重载将将重载的概念拓展到运算符上,允许赋予C++运算符多种含义。 C++允许将运算符重载拓展到用户定义的类型。例如:将两个数组相加是一种常见的运算。 通常,需要使用for循环实现:for (int i = 0; i < 20;i++) evening[i] = sam[i] + janet[i];但在C++中,可以定义一个表示...翻译 2018-07-05 14:42:02 · 682 阅读 · 0 评论 -
C++-类和对象(this指针和对象数组)
this指针和对象数组(1) this指针:每个成员函数(包括构造函数和析构函数)都有一个this指针。 this指针指向调用对象。 如果方法需要引用整个调用对象,则可以使用表达式*this。在函数的括号后面使用const限定符将this限定为const,这样将不能使用this来修改对象的值。//stock20.h -- 加强版#ifndef STOCK00_H_#define STOCK...翻译 2018-07-04 18:12:59 · 423 阅读 · 0 评论 -
C++-类继承-进阶
类继承静态联编和动态联编将源代码中的函数调用解释为执行特定的函数代码被称为函数名联编(binding)。在编译过程中进行联编称为静态联编(static binding),又称为早期联编(early binding)。然而,虚函数使这项工作变得更困难。 编译器必须生成能够在程序运行时选择正确的虚方法的代码,这被称为动态联编(dynamic binding),又称为晚期联编(late b...翻译 2018-07-23 19:44:12 · 263 阅读 · 0 评论 -
C++-类继承
类继承C++提供了比修改代码更好的方法来拓展和修改类。 这种方法叫做类继承,它能够从已有的类派生出新的类,而派生类继承了原有类(称为基类)的特征,包括方法。 下面是可以通过类继承完成的一些工作。可以在已有类的基础上添加功能。 可以给类添加数据。 可以修改类方法的行为。一个简单的基类从一个类派生出另一个类时,原始类称为基类,继承类称为派生类。程序清单://tabtenn0.h...翻译 2018-07-21 14:22:09 · 279 阅读 · 0 评论 -
C++中的代码重用
C++的一个主要目标是促进代码重用。 公有继承是实现这种目标的机制之一,但并不是唯一的机制。 其中之一是使用这样的类成员:本身是另一个类的对象。 这种方法称为包含、组合或层次化。 另一种方法是使用私有或保护继承。 通常,包含、私有继承和保护继承用于实现has-a关系,即新的类将包含另一个类的对象。 多重继承使得能够使用两个或更多的基类派生出新的类,将基类的功能组合在一起。类模板是另一种重用代码...翻译 2018-07-27 18:10:43 · 871 阅读 · 0 评论 -
C++中的代码重用-进阶
C++中的代码重用类模板可以定义专门用于存储double值或string对象的Stack类,除了保存的对象类型不同外,这两种Stack类的代码是相同的。 然而,与其编写新的类声明,不如编写一个泛型(即独立于类型的)栈,然后将具体的类型作为参数传递给这个类。定义模板类和模板函数一样,模板类以下面这样的代码开头:template <class Type>关键字templ...翻译 2018-08-06 17:50:21 · 284 阅读 · 0 评论 -
string类和标准模板库
string类和标准模板库string类构造字符串string类的构造函数 构造函数 描述 string(const char *) 将string对象初始化为s指向的NBTS string(size_type n, char c) 创建一个包含n个元素的string对象,其...翻译 2018-08-06 17:57:48 · 722 阅读 · 0 评论 -
C++内存模型-作用域和链接
作用域(scope)描述了在文件(翻译单元)的多大范围可见。链接性(linkage)描述了名称如何在不同单元间共享。链接性为外部的名称可在文件间共享,链接性为内部的名称只能由一个文件中的函数共享。 (1) 自动变量只在包含它们的函数或代码块中可见。//autoscp.cpp - 阐明自动变量的范围#include<iostream>void oil(int x);int mai...翻译 2018-06-29 19:49:09 · 237 阅读 · 0 评论