![](https://img-blog.csdnimg.cn/20201014180756724.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
C++
liyf__
这个作者很懒,什么都没留下…
展开
-
单链表的创建、插入删除等操作
//.... utili.h#ifndef UTILI_H#define UTILI_H#include<iostream>using namespace std;#include<assert.h>#define bool int#define true 1#define false 0#endif//..... list.h#ifndef LIST-H#defi原创 2017-05-20 17:22:37 · 292 阅读 · 0 评论 -
排序--堆排序
//.........................堆排序/*堆排序的两个重要步骤:初始化堆(即将待排序的数组转化成二叉堆) 将数组转换成最大堆之后,接着要进行交换数据,从而使数组成为一个真正的有序数组堆排序的时间复杂度是O(n*lgn)堆排序是不稳定的算法,在交换数据的时候,是比较父节点和子节点之间的数据,所以,两个数值相等的兄弟节点,它们的相对顺序也可能发生变化*/#i原创 2017-05-20 17:26:52 · 232 阅读 · 0 评论 -
排序-快速排序
//................................快速排序/* 快速排序是C.R.A.Hoare于1962年提出的一种划分交换排序。它采用了一种分治的策略,通常称其为分治法 该方法的基本思想是:1.先从数列中取出一个数作为基准数。2.分区过程,将比这个数大的数全放到它的右边,小于或等于它的数全放到它的左边。3.再对左右区间重复第二步,直到各区间只有一个数。递归操作。快原创 2017-05-20 17:29:42 · 191 阅读 · 0 评论 -
排序--选择排序
//................................选择排序/*基本思想:每一趟在后面n-i个待排序元素中选出排序码最小的元素,作为有序元素序列的第i个元素。 直接选择排序的排序码比较次数与元素的初始排列无关,但是元素的移动次数与元素序列的初始排列有关 直接选择排序是一种不稳定的排序算法;*/#if 0#include<iostream>using names原创 2017-05-20 17:32:12 · 202 阅读 · 0 评论 -
排序-希尔排序
//..............................希尔排序(缩小增量排序)/*基本思想: 设待排序元素序列有N各元素,首先取一个整数gap<n作为间隔,将全部元素分为gap个子序列, 所有距离为gap的元素放在同一个子序列中,在每一个子序列中分别施行直接插入排序。 然后缩小间隔gap,重复上述的子序列划分和排序工作,直到最后gap==1,将所有元素放在同一个子序列中排序原创 2017-05-20 17:33:11 · 613 阅读 · 0 评论 -
排序--折半插入排序
#if 0//............................折半插入排序(二分法插入排序)/* 折半插入排序的元素移动次数与直接插入排序相同,依赖于元素的初始排列, 折半插入排序所需附加存储空间和直接插入排序相同,但是折半插入排序减少了关键字的比较次数,而记录的次数不变。 折半插入排序是一种稳定的排序算法*/#include<iostream>using namesp原创 2017-05-20 17:35:03 · 486 阅读 · 0 评论 -
排序--直接插入排序
//.........................直接插入排序/* 直接插入排序的运行时间和待排序元素的原始排列顺序密切相关, 直接插入排序的时间复杂度为O(n^2), 直接插入排序是一种稳定的排序算法。 在元素的初始排列已经按排序码排好序或接近有序时,直接插入排序速度最快。*/#if 0#include<iostream>using namespace std;#defin原创 2017-05-20 17:38:40 · 264 阅读 · 0 评论 -
排序--冒泡排序
#include<iostream>using namespace std;//...............................冒泡排序/* 冒泡排序的数据比较次数与输入序列中各待排序元素的初始排列无关,但数据的交换次数与各待排序元素的初始排列有关。*/#if 0#define N 10void BubbleSort( int a[],int n){ int i,原创 2017-05-20 17:39:54 · 282 阅读 · 0 评论 -
栈的应用---括号匹配问题
//括号匹配问题//.....................stack.h#ifndef _STACK_H_#define _STACK_H_#include<iostream>using namespace std;#define bool int#define false 0#define true 1// 顺序栈template<class Type>class S原创 2017-05-21 17:38:23 · 291 阅读 · 0 评论 -
算法--正整数划分
//.7.正整数划分问题#if 0int Func(int n,int m){if((n<1)||(m<1))return 0;if((n==1)||(m==1))return 1;if(n<m)return Func(n,n);if(n==m)return Func(n,m-1)+1;return Func(n,m-1)+Func(n-m,m);}void main(原创 2017-05-21 17:40:03 · 728 阅读 · 0 评论 -
算法(递归)--汉诺塔
//: 一个直接或间接地调用自身的算法称为递归算法,一个使用函数自身给出定义的函数称为递归函数。//双递归函数:当一个函数及它的一个变量是由函数自身定义时,称这个函数式双递归函数。//.1.汉诺塔...#if 0void hanoi(int n,char a,char b,char c){void move(char x,char y);if(n==1)move(a,c);else原创 2017-05-21 17:48:15 · 442 阅读 · 0 评论 -
split函数与strtok函数的实现
#if 0//..................split()函数/*vector<string>split(const string &s,const string &seperator);*/ /*输入一个字符串,一个分隔符字符串(可包含多个分隔符,返回一个字符串向量*/vector<string>split(const string &s,const string &seperator原创 2017-08-02 08:50:16 · 352 阅读 · 0 评论 -
拷贝和赋值的区别
//对于拷贝和赋值很容易混淆的一个问题例如:string str1 = "hello world"; string str2 = str1; 不要以为有“=”就是赋值操作,其实,这两条语句等价于: string str1 ("hello world"); //调用的是构造函数 string str2 (str1); //调用的是拷贝构造函数 如果s原创 2017-08-10 11:48:32 · 799 阅读 · 0 评论 -
一元多项式的加减乘运算
//............polyn.h#ifndef _POLYN_H#define _POLYN_H#include<iostream>#include<assert.h>using namespace std;typedef struct PolynNode{float coef;int expn;struct PolynNode *link;}PolynNode;t原创 2017-05-20 17:09:42 · 1364 阅读 · 0 评论 -
编写String 类的构造函数,析构函数和赋值函数
//.......................编写String 类的构造函数,析构函数和赋值函数#if 0#include<iostream>#include<string>using namespace std;class String { friend ostream & operator<<(ostream& o,const String &str); public:St原创 2017-05-20 16:19:55 · 419 阅读 · 0 评论 -
金山笔试题-字符串中的字符’*‘移到串的前部分
/* 2005 年11 月金山笔试题。 函数将字符串中的字符’‘移到串的前部分,前面的非’‘字符后移,但不能改变非’*’字符的先后顺序, 函数返回串中字符’*’的数量。如原始串为:abcde*12,处理后为*abcde12,函数并返回值为1。(要求使用尽量少的时间和辅助空间)。 */includeusing namespace std;int strMove(char* str) {原创 2017-05-18 10:38:57 · 653 阅读 · 0 评论 -
图的邻接矩阵表示及插入删除等操作
// graphmtx.h#pragma once#include<iostream>using namespace std;#define DEFAULT_VERTICES_SIZE 10 //默认最大顶点数template< class T,class E>class GraphMtx{public:GraphMtx( int sz=DEFAULT_VERTICES_SIZE原创 2017-05-19 16:41:38 · 5933 阅读 · 0 评论 -
求最大利益的简单算法
//求最大利益的简单算法#include<iostream>#include<algorithm>using namespace std;#if 0/*最大利益:例如 输入5 3 1 4 3 6 5是初始值 之后价格连续下降直至1,又开始上涨,当涨到6的时候能够获得最大利益为5 就是所求的值*/static const int MAX = 200000;int main(){原创 2017-05-19 16:50:44 · 776 阅读 · 0 评论 -
最小生成树--Kruskal算法
// gramtx-minspantree.h#pragma once#include<iostream>#include<malloc.h>#include<stdlib.h>#include<assert.h>using namespace std;#define DEFAULT_VERTICES_SIZE 10//#define T char//#define E int原创 2017-05-19 16:55:37 · 403 阅读 · 0 评论 -
最小生成树的Prim算法
// gramtx-minspantree.h#pragma once#include<iostream>#include<malloc.h>#include<stdlib.h>#include<assert.h>using namespace std;#define DEFAULT_VERTICES_SIZE 10//#define T char//#define E int原创 2017-05-19 16:58:22 · 176 阅读 · 0 评论 -
栈的入栈/出栈操作
//...........................编程实现栈的入栈/出栈操作 (先进后出)/*栈 ---只允许在表的末端进行插入和删除的线性表 允许插入和删除的一端叫做栈顶 不允许插入和删除的一端叫做栈底 */#if 0 #include<iostream>#include<stdio.h>#include<string.h>#include<conio.h>原创 2017-05-19 17:32:13 · 1499 阅读 · 0 评论 -
队列的入队/出队操作
//............编程实现队列的入队/出队操作 (先进先出)#include<iostream>using namespace std;//node表示队列中每个节点元素typedef struct node{int data;struct node *next;}node;//queue表示队列typedef struct queue{node *first;原创 2017-05-19 17:34:59 · 5111 阅读 · 0 评论 -
双循环链表的创建以及插入删除等操作
//..............utili.h#ifndef UTILI_H#define UTILI_H#include<iostream>using namespace std;#endif//...............DClist.h#ifndef _LIST_H#define _LIST_H#include"utili.h"#define ElemType inttem原创 2017-05-19 18:30:36 · 549 阅读 · 0 评论 -
双链表的实现以及插入删除等操作
//...........DList.h#ifndef _LIST_H_#define _LIST_H_#include<stdio.h>#include<stdlib.h>#include<malloc.h>#include<assert.h>#define ElemType inttypedef struct Node{ElemType data;struct Node *原创 2017-05-19 18:33:07 · 455 阅读 · 0 评论 -
螺旋矩阵--由外向内旋转输出
/*算法--螺旋矩阵-由外向内旋转 :从首坐标开始顺时针依次增大。1 2 3 4 516 17 18 19 615 24 25 20 714 23 22 21 813 12 11 10 9*/#if 0#include <iostream>using namespace std;#define MAX 5int a[MAX][MAX]; //保存5x5的矩阵void F原创 2017-05-20 16:02:21 · 1002 阅读 · 0 评论 -
将基类的析构函数申明为虚函数
在C++中,析构函数的作用是:当一个对象被销毁时,调用析构函数对类对象和对象成员进行释放内存和清除工作。为什么要将基类的析构函数声明为虚函数: 请看下面的代码示例:#include<iostream>using namespace std;class Base{public: Base() { cout<<"Construct Base"<<endl;原创 2017-08-17 15:57:54 · 805 阅读 · 0 评论