![](https://img-blog.csdnimg.cn/20201014180756724.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
C++
song-10
~
展开
-
编译原理实验-词法分析
用c++实现编译原理的词法分析实验原创 2020-07-14 23:23:09 · 727 阅读 · 0 评论 -
C++中类类型的数组
前些天看到一段以前没见过的类实例化的方式,自己琢磨了一下有了自己的理解。先看看这种实例化的方式:#include<iostream>using namespace std;class A{public: static int b; int a; A(int t=2):a(t){b++;} void print(){cout<<a<&l...原创 2018-12-29 21:00:10 · 21094 阅读 · 2 评论 -
二叉树前序、中序、后序三种遍历(C++)
前序遍历递归算法:void PreOrder(Node *bt)//形参为结构体类型的指针{ if(bt==NULL)return;//递归调用的结束条件 else{ cout<<bt->data;//访问根结点的data值 PreOrder(bt->lchild);//前序递归遍历bt左子树 PreOrder(bt->rchi...原创 2018-12-18 23:04:57 · 8949 阅读 · 2 评论 -
图中以邻接矩阵中两种遍历方法以及删减顶点和边的操作(C++)
图的广度优先遍历:从图中某顶点v出发进行广度优先遍历的基本思想是:(1)访问顶点v;(2)依次访问v的各个未被访问的邻接点,v1,v2,v3……,vk;(3)分别从v1,v2,……,vk出发依次访问它们未被访问的邻接点,并使“先被访问顶点的邻接点”先于“后被访问顶点的邻接点”被访问。直至图中所有与顶点v有路径相通的顶点都被访问到。广度优先遍历图是以顶点v为起始点,由近至远,依次...原创 2018-12-18 22:13:42 · 4701 阅读 · 0 评论 -
单链表的就地逆置(蛮力法思想)
先看一下题目:以单链表做存储结构,写一实现线性表的就地逆置算法两种思路:1、采用头插法新建单链表时,得到的单链表数据域所组成的序列刚好是输入序列的逆序,所以这里的单链表的就地逆置可以考虑头插法实现,即将数据域第一个结点后的结点取出,再将取出的结点插入到头结点之后,重复操作,直至原第一个结点到达最后(next指针为空)2、设置标志位,在结点的数据域添加flag标志。逆置操作其实就是把第i...原创 2018-12-22 17:57:35 · 1183 阅读 · 0 评论 -
同余式判断等式(C++的实现)
从十进制数的定义来看,任意一十进制数都可以按全展开成N*10^n的形式,而对任意正整数i有:10^i≡1(mod3), 10^i≡1(mod9)所以在判断某个等式(乘法,加法,减法计算)是否成立时,可以将等号两边的十进制数按权展开,再判断等式两边是否模9(或者模3)同余,进而判断等式是否成立。利用这一性质也可以判断某一整数是否能被3或者9整除。对于二进制、十六进制表示的正整数也可...原创 2018-12-27 22:53:58 · 1555 阅读 · 0 评论 -
顺序表的就地逆置操作
题目:以顺序表做储存结构,写一实现线性表就地逆置的算法C++实现如下:#include <iostream>using namespace std;class SeqList{public: SeqList(int a[], int n);//初始化顺序表 void Inversion(int n);//就地逆置 void PrintList(int n);//...原创 2018-12-20 23:13:37 · 4677 阅读 · 0 评论 -
单链表中的删除操作
题目:设单链表以非递减有序列,设计算法实现在单链表中删除值相同的多余结点C++是实现如下:#include <iostream>using namespace std;struct Node{ int data; Node *next;};class LinkList{public: LinkList();//初始化空链表 LinkList(int b...原创 2018-12-20 22:37:21 · 4025 阅读 · 0 评论 -
顺序查找C++实现(哨兵设置在数组下标高端)
设置“哨兵”,哨兵就是待查值,将它放在查找方向的“尽头”处,免去了在查找过程中每一次比较后都要判断查找位置是否越界,从而提高查找速度。顺序查找伪代码描述如下:1、设置哨兵;2、初始化查找的起始下标i=n;3、若r[i]与k相等,则返回当前i的值;否则,继续比较前一个记录;c++实现如下:#include <iostream>using namespace...原创 2018-12-15 19:00:05 · 5956 阅读 · 3 评论 -
简单选择排序(C++单链表实现)
具体实现过程为:1、将整个记录序列划分为有序区和无序区,初始时有序区为空,无序区含有待排序所有记录。2、在无序区中选取关键码最小记录,将它与无序区中的第一个记录交换,使得有序区扩展了一个记录,同时无序区减少了一个记录。3、不断重复2,直到无序区只剩下一个记录为止。此时所有记录已经按关键码从小到大的顺序排列。c++单链表实现如下:#include<iostream...原创 2018-12-14 22:36:17 · 10731 阅读 · 5 评论 -
直接插入法排序(c++单链表的实现)
具体排序过程是;1、将整个记录序列划分为有序区和无序区,初始时有序区为待排序记录中第一个记录,无序区包括所有剩余待排序的记录。2、将无序区的第一个记录插入到有序区的合适位置中,从而使无序区减少一个记录,有序区增加一个记录。3、不断重复2,直到无序区只剩下一个记录为止。#include <iostream>using namespace std;const in...原创 2018-12-14 22:45:45 · 5157 阅读 · 2 评论 -
单链表实现Eratosthenes筛选法
对于任意正整数N,Eratosthenes筛法可表示如下:第1步,找出小于等于√N的全部素数:p1、p2、p3、…pm。第2步,在1~N中分别划去p1、p2、…pm全部倍数(除了他们自己本身)。第2步完成后剩下的整数除1外就是不超过N的全部素数。简而言之,筛选原理如下:对于一个正整数a<=N,如果素数p1、p2、…、pm(小于等于√N)都不整除a,则a是素数。下面是C++...原创 2018-12-14 16:05:36 · 639 阅读 · 1 评论 -
队列的入队出队操作(C++循环链表)
队列:只允许在一端进行插入操作,在另一端进行删除操作。允许插入(入队、进队)的一段端称为队尾,允许删除(出队)的一端称为队首(队头)。队列具有先进先出的特点。题目:设计以不带头结点的循环链表表示队列,并且只设置一个指针指向队尾结点,但不设头指针。设计相应的入队和出队操作的算法。C++的实现:#include<iostream>using namespace st...原创 2018-12-19 23:04:16 · 5311 阅读 · 0 评论 -
二叉树采用顺序存储结构时的前序遍历
题目:一颗具有n个结点的二叉树采用顺序储存结构,编写算法对该二叉树进行前序遍历C++实现如下:#include<iostream>using namespace std;class SeqTree{public: SeqTree(int n) { Creat(n); }//构造二叉树,采用顺序表储存数据 void Creat(int n); void PreOr...原创 2018-12-19 22:40:56 · 7926 阅读 · 1 评论