![](https://img-blog.csdnimg.cn/20201014180756923.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
C++
文章平均质量分 67
HackQ_sxj
这个作者很懒,什么都没留下…
展开
-
6-1 循环单链表区间删除
本题要求实现带头结点的循环单链表的创建和单链表的区间删除。L是一个带头结点的循环单链表,函数ListCreate_CL用于创建一个循环单链表,函数ListDelete_CL用于删除取值大于min小于max的链表元素。函数接口定义: Status ListCreate_CL(LinkList &CL); void ListDelete_CL(LinkList &CL,El原创 2017-11-08 21:56:36 · 846 阅读 · 0 评论 -
2.排序算法——快速排序
问题描述:利用快速排序算法对下列实例排序,在算法执行过程中,写出数组A第一次排序后被分割的过程。 A=(65,70,75,80,85,55,50,2)解题思想:在快速排序中,记录的比较和交换是从两端向中间进行的,关键字较大的记录一次就能交换到后面的单元,总的比较和移动次数较少。对于输入的数组a[p:r],做法为:*分解:以a[p]为基准元素将a[p: r]划分成三部...原创 2018-06-03 21:17:34 · 1871 阅读 · 0 评论 -
第二章 递归与分治策略
思想:将一个难以解决的大问题分割成一些规模较小的相同问题,以便各个击破,分而治之。而后求出小规模问题的解,逐步合并为原来的问题的解。 递归算法:直接或间接的调用自身的算法 分治法:将大问题分解成小问题,反复使用分治手段,可使子问题与原问题类型一致而其规模不断缩小,最终使子问题缩小到很容易直接求解。这自然导致了递归过程的产生。 递归与分治如孪生兄弟,常同时应用在算法设计中。 分治法适用问题多...原创 2018-06-03 21:23:46 · 1012 阅读 · 0 评论 -
2.动态规划的矩阵连乘问题
问题描述: 利用动态规划方法,求解下面矩阵连乘A1A2A3A4所需的最少数乘次数,并给出最佳乘积序列,要求给出求解步骤,给出最优值数组和最佳断开位置数组。其中,pi-1 为矩阵Ai的行数,pi为矩阵Ai的列数,四个矩阵中各矩阵维数分别如下:解题思想:计算A[i:j]矩阵的最小连乘,1<=i<=j<=n,所需要的最小数乘次数为m[i, j]。当i=j时,A[i:j]=Ai,因此,m...原创 2018-06-04 20:23:08 · 1876 阅读 · 0 评论 -
动态规划求解最长子序列
问题描述:给定两个序列X={B,C,D,A},Y={A,B,C,B},请采用动态规划策略求出其最长公共子序列,要求给出过程。解题思想:设序列X={x1,x2,...,xm}和Y={x1,x2,...,xn}的最长公共子序列Z={z1,z2,...,zk}则*若xm=yn,则zk = xm = yn,且Zk-1是 Xm-1和Yn-1的最长公共子序列。*若xm≠yn,且zk≠xm,则Z是Xm-1和Y的...原创 2018-06-07 21:30:25 · 1388 阅读 · 1 评论 -
竖式问题
问题描述:找出形如 abc*de (三位数乘以两位数) 的算式,使得在完整的竖式中,所有数字属于一个特定的数字集合。输入数字集合 (相邻数字之间没有空格),输出所有竖式。每个竖式前应有编号,之后应有一个空行。最后输出解的总数。样例输入:2357样例输出: 本题看了很久才明白题目含义:如输入2357,即特定的数字集合为{2,3,5,7}。第一行775属于7,5;第二行33属于...原创 2019-03-07 17:37:53 · 154 阅读 · 0 评论 -
C++知识点第二篇
一、类 class是面向对象程序设计的核心,是实现数据封装和信息隐藏的工具,是继承和多态的基础。1、类声明中的访问限定符没有先后次序之分2、同一个类中,访问限定符的出现次数没有限制3、处于信息隐藏目的,多将数据成员和只能让内部访问的成员函数设置为private4、数据成员可以是任何数据类型,但不能是自身类的对象!5、在声明类时,不能为数据成员赋初值(因为类相当于一个自定义...原创 2019-03-25 17:33:18 · 205 阅读 · 0 评论 -
C++知识点第三篇
一、类1、this指针 类的多个成员共用一份成员函数,通过this指针区别不同对象,this是用于标识一个对象自引用的隐式指针。注意:静态成员函数中没有this指针所以静态成员不能访问对象的非静态数据成员。2、类对象成员 类中也可以用其它类的对象作为成员,对象成员必须采用初始化列表方式进行初始化。3、向函数传递对象 可分为:值传递,传引用,传指针 值传递以按域复...原创 2019-03-26 22:16:35 · 148 阅读 · 0 评论 -
C++知识点第一篇
C++最大的改变就是在C中引入了面向对象程序设计的语言机制。1、在C语言中,结构和联合中的函数是不允许的,且必须在相关变量的定义前面加上对应的关键字(struct student s1;)。2、C中局部变量应该在函数的可执行语句之前定义,另外C++允许在for循环中定义变量。一、指针 用于存放一个对象在内存中的地址,通过指针能够间接的操作这个对象。典型用法建立链接的数据结构(...原创 2019-03-24 16:09:33 · 294 阅读 · 0 评论 -
C++知识点第四篇
一、静态绑定和动态绑定 面向对象程序设计语言的另一特征,指不同对象接收到同一消息时会产生不同的行为。 继承处理的是类与类之间的层次关系问题,而多态则是处理类的层次结构之间以及同一个类内部同名函数的关系问题。1、静态绑定:在编译程序时根据调用函数提供的信息,把对应的具体函数确定下来,通过函数重载和运算符重载来实现静态多态性。2、动态绑定:在编译程序时还不能确定函数调用所对应的具体...原创 2019-03-27 22:30:36 · 140 阅读 · 0 评论 -
3.排序算法——归并排序
问题描述: 归并排序算法对下列实例排序,写出基于归并排序算法对下面实例进行排序的具体过程。 A=(48,12,61,3,5,19,32,7)解题思想:将n个元素分成2个子集合,分别对子集合进行排序,最终将排好序的子集合合并为有序集合。n=1是中止。代码如下:...原创 2018-06-03 20:44:12 · 1159 阅读 · 0 评论 -
6-2 单链表元素定位
本题要求在链表中查找第一个数据域取值为x的节点,返回节点的位序。L是一个带头结点的单链表,函数ListLocate_L(LinkList L, ElemType x)要求在链表中查找第一个数据域取值为x的节点,返回其位序(从1开始),查找不到则返回0。例如,原单链表各个元素节点的元素依次为1,2,3,4,则ListLocate_L(L, 1)返回1,ListLocate_L(L, 3)返回3,而L原创 2017-11-08 22:18:46 · 661 阅读 · 0 评论 -
堆栈操作合法性
7-1 堆栈操作合法性(20 分)假设以S和X分别表示入栈和出栈操作。如果根据一个仅由S和X构成的序列,对一个空堆栈进行操作,相应操作均可行(如没有出现删除时栈空)且最后状态也是栈空,则称该序列是合法的堆栈操作序列。请编写程序,输入S和X序列,判断该序列是否合法。输入格式:输入第一行给出两个正整数N和M,其中N是待测序列的个数,M(≤50)是堆栈的最大容量。随后N行,每原创 2017-09-28 20:52:16 · 1089 阅读 · 0 评论 -
顺序表的相关操作
//头文件的引入#include#include#include//函数结果状态代码#define TRUE 1#define FLASE 0#define OK 1#define ERROR 0#define INFEASIBLE -1#define OVERFLOW -2typedef int原创 2017-10-15 21:39:38 · 237 阅读 · 0 评论 -
数组循环左移
本题要求实现一个对数组进行循环左移的简单函数:一个数组a中存有n(>)个整数,在不允许使用另外数组的前提下,将每个整数循环向左移m(≥)个位置,即将a中的数据由(a0a1⋯an−1)变换为(am⋯an−1a0a1⋯am−1)(最前面的m个数循环移至最后面的m个位置)。如果还需要考虑程序移动数据的次数尽量少,要如何设计移动的方法?输入格式:原创 2017-11-14 10:49:53 · 942 阅读 · 0 评论 -
带头结点的单链表就地逆置
本题要求编写函数实现带头结点的单链线性表的就地逆置操作函数。L是一个带头结点的单链表,函数ListReverse_L(LinkList &L)要求在不新开辟节点的前提下将单链表中的元素进行逆置,如原单链表元素依次为1,2,3,4,则逆置后为4,3,2,1。函数接口定义:void ListReverse_L(LinkList &L);其中 L 是一个带头结点的单链表。裁原创 2017-11-14 16:59:10 · 3060 阅读 · 0 评论 -
7-3 jmu-ds-单链表的基本运算
实现单链表的基本运算:初始化、插入、删除、求表的长度、判空、释放。(1)初始化单链表L,输出L->next的值;(2)依次采用尾插法插入元素:输入分两行数据,第一行是尾插法需要插入的字符数据的个数,第二行是具体插入的字符数据。(3)输出单链表L;(4)输出单链表L的长度;(5)判断单链表L是否为空;(6)输出单链表L的第3个元素;(7)输出元素a的位置;(8)在第4原创 2017-11-21 21:21:02 · 908 阅读 · 0 评论 -
7-1 两个有序链表序列的合并
已知两个非降序链表序列S1与S2,设计函数构造出S1与S2的并集新非降序链表S3。输入格式:输入分两行,分别在每行给出由若干个正整数构成的非降序序列,用−表示序列的结尾(−不属于这个序列)。数字用空格间隔。输出格式:在一行中输出合并后新的非降序链表,数字间用空格分开,结尾不能有多余空格;若新链表为空,输出NULL。输入样例:1 3 5 -12 4 6原创 2017-11-21 21:57:19 · 872 阅读 · 0 评论 -
栈的相关操作
学习栈的时候自己写了个代码,革新就是加上了动态输出栈内容,可以直观的观察了解栈内情况,对初学栈的同学应该有一定帮助。 //库函数头文件包含#include#include#include//函数状态码定义#define TRUE 1#define FALSE 0#define OK 1#define ERROR 0#原创 2017-11-22 21:57:07 · 274 阅读 · 0 评论 -
5.搜索算法——二分搜索
题目:有一个有序表为{1,3,9,12,32,41,45,62,75,77,82,95,100},当使用二分搜索值为82的结点时,经过多少次比较后查找成功并给出具体过程。思想:令所查找元素为x,与有序数组a的中间元素a[mid]比较 若x=a[mid],则x在L中的位置就是mid; 如果x<a[mid],则x在a[mid]的前面,二分查找a[p:mid-1]; 如果x>a[mid...原创 2018-06-03 17:15:24 · 776 阅读 · 0 评论 -
C++知识点第五篇
一、运算符重载 通过重载扩展C++运算符的功能,使其能够操作用户自定义的数据类型,增加程序代码的直观性和可读性。但运算符重载过程中具有以下限定条件:(1)不能改变运算符的优先级(2)不能改变运算符的结合顺序(3)重载运算符不能使用默认参数(4)不能改变运算符所需要的参数个数(5)不能创造新的运算符(6)不能改变运算符原有含义(7)若运算符被重载为类的成员函数,则只能是非静态的成员函数...原创 2019-03-28 22:20:01 · 149 阅读 · 0 评论