
数据结构与算法
吃完有点累
毕业于幼儿园,菜鸟 小白
展开
-
数据结构leetcode——day3
350. 两个数组的交集 II思路:双指针+排序 有序过后 利用双指针同步比较,不同则较小的往前走继续比较,相同就写入数组,两指针同时走比较下一位(记录下qsort中cmp函数,int cmp(const void *a, const void *b)返回正数就是说 cmp 传入参数第一个要放在第二个后面, 负数就是传入参数第一个要放第二个前面, 如果是 0, 那就无所谓谁前谁后.所以更具体的也可以这么写int cmp(const void* _a, const void* _b) {原创 2021-07-28 23:37:24 · 176 阅读 · 0 评论 -
数据结构leetcode——day2
1. 两数之和方法一:暴力求解/** * Note: The returned array must be malloced, assume caller calls free(). */int* twoSum(int* nums, int numsSize, int target, int* returnSize){ for(int i=0; i<numsSize-1;i++) { for(int j=i+1;j<numsSize;j++)原创 2021-07-27 13:43:01 · 123 阅读 · 0 评论 -
数据结构leetcode——day1
217. 存在重复元素题目即寻找有无重复元素,有就返回true 没有返回false思路一:直接排序 然后查找相邻元素是否相同int cmp(const void* a, const void* b) { return *(int*)a - *(int*)b;}bool containsDuplicate(int* nums, int numsSize) { qsort(nums, numsSize, sizeof(int), cmp); for (int i = 0;原创 2021-07-26 14:27:07 · 217 阅读 · 0 评论 -
归并排序 c语言实现
归并排序归并排序(Merge Sort)是建立在归并操作上的一种有效,稳定的排序算法算法复杂度:O(nlogn)就是将已有序的子序列合并,得到完全有序的序列;即先使每个子序列有序,再使子序列段间有序。若将两个有序表合并成一个有序表,称为二路归并。递归实现/* 归并排序 - 递归实现 */#include <stdio.h>#include<stdlib.h> #define ElementType int/* L = 左边起始位置, R = 右边起始位置,原创 2021-01-11 23:42:53 · 903 阅读 · 0 评论 -
用c语言手写堆排序以及来道简单题吧 1046. 最后一块石头的重量
堆排序手写一遍吧#include<stdio.h>#include<stdlib.h>void swap(int *a,int *b){ int temp=*a; *a=*b; *b=temp; } void HeapAdjust(int *heap,int i,int size){ int lchild=2*i+1;//左孩子序号 int rchild=2*i+2;//右孩子序号 int temp =i; if(i<=size/2-1) {原创 2020-12-30 23:53:05 · 2231 阅读 · 4 评论 -
数据结构与算法——7-29 修理牧场 (25分)
7-29 修理牧场 (25分)农夫要修理牧场的一段栅栏,他测量了栅栏,发现需要N块木头,每块木头长度为整数Li个长度单位,于是他购买了一条很长的、能锯成N块的木头,即该木头的长度是Li的总和。但是农夫自己没有锯子,请人锯木的酬金跟这段木头的长度成正比。为简单起见,不妨就设酬金等于所锯木头的长度。例如,要将长度为20的木头锯成长度为8、7和5的三段,第一次锯木头花费20,将木头锯成12和8;第二次锯木头花费12,将长度为12的木头锯成7和5,总花费为32。如果第一次将木头锯成15和5,则第二次锯木头花原创 2020-07-27 17:27:05 · 958 阅读 · 0 评论 -
数据结构与算法——7-28 搜索树判断 (25分)
7-28 搜索树判断 (25分)对于二叉搜索树,我们规定任一结点的左子树仅包含严格小于该结点的键值,而其右子树包含大于或等于该结点的键值。如果我们交换每个节点的左子树和右子树,得到的树叫做镜像二叉搜索树。现在我们给出一个整数键值序列,请编写程序判断该序列是否为某棵二叉搜索树或某镜像二叉搜索树的前序遍历序列,如果是,则输出对应二叉树的后序遍历序列。输入格式:输入的第一行包含一个正整数N(≤1000),第二行包含N个整数,为给出的整数键值序列,数字间以空格分隔。输出格式:输出的第一行首先给出判断结果原创 2020-07-27 11:51:50 · 233 阅读 · 0 评论 -
数据结构与算法——7-27 家谱处理 (30分)
7-27 家谱处理 (30分)人类学研究对于家族很感兴趣,于是研究人员搜集了一些家族的家谱进行研究。实验中,使用计算机处理家谱。为了实现这个目的,研究人员将家谱转换为文本文件。下面为家谱文本文件的实例:JohnRobertFrankAndrewNancyDavid家谱文本文件中,每一行包含一个人的名字。第一行中的名字是这个家族最早的祖先。家谱仅包含最早祖先的后代,而他们的丈夫或妻子不出现在家谱中。每个人的子女比父母多缩进2个空格。以上述家谱文本文件为例,John这个家族最早的祖先,他有两个子原创 2020-07-26 23:25:49 · 876 阅读 · 0 评论 -
数据结构与算法——7-26 Windows消息队列 (25分)
7-26 Windows消息队列 (25分)消息队列是Windows系统的基础。对于每个进程,系统维护一个消息队列。如果在进程中有特定事件发生,如点击鼠标、文字改变等,系统将把这个消息加到队列当中。同时,如果队列不是空的,这一进程循环地从队列中按照优先级获取消息。请注意优先级值低意味着优先级高。请编辑程序模拟消息队列,将消息加到队列中以及从队列中获取消息。输入格式:输入首先给出正整数N(≤105),随后N行,每行给出一个指令——GET或PUT,分别表示从队列中取出消息或将消息添加到队列中。如果指令是原创 2020-07-26 11:48:34 · 551 阅读 · 0 评论 -
数据结构与算法——7-25 朋友圈 (25分)
7-25 朋友圈 (25分)某学校有N个学生,形成M个俱乐部。每个俱乐部里的学生有着一定相似的兴趣爱好,形成一个朋友圈。一个学生可以同时属于若干个不同的俱乐部。根据“我的朋友的朋友也是我的朋友”这个推论可以得出,如果A和B是朋友,且B和C是朋友,则A和C也是朋友。请编写程序计算最大朋友圈中有多少人。输入格式:输入的第一行包含两个正整数N(≤30000)和M(≤1000),分别代表学校的学生总数和俱乐部的个数。后面的M行每行按以下格式给出1个俱乐部的信息,其中学生从1~N编号:第i个俱乐部的人数Mi(原创 2020-07-25 18:59:20 · 641 阅读 · 0 评论 -
数据结构与算法——7-24 树种统计 (25分)
7-24 树种统计 (25分)随着卫星成像技术的应用,自然资源研究机构可以识别每一棵树的种类。请编写程序帮助研究人员统计每种树的数量,计算每种树占总数的百分比。输入格式:输入首先给出正整数N(≤105),随后N行,每行给出卫星观测到的一棵树的种类名称。种类名称由不超过30个英文字母和空格组成(大小写不区分)。输出格式:按字典序递增输出各种树的种类名称及其所占总数的百分比,其间以空格分隔,保留小数点后4位。思路:首先复习一下map的知识自动建立Key - value的对应。key 和 valu原创 2020-07-25 15:25:59 · 553 阅读 · 0 评论 -
数据结构与算法——7-23 还原二叉树 (25分)
7-23 还原二叉树 (25分)给定一棵二叉树的先序遍历序列和中序遍历序列,要求计算该二叉树的高度。输入格式:输入首先给出正整数N(≤50),为树中结点总数。下面两行先后给出先序和中序遍历序列,均是长度为N的不包含重复英文字母(区别大小写)的字符串。输出格式:输出为一个整数,即该二叉树的高度。思路:根据前序遍历和中序遍历来确定左右子树,先找到树根即前序遍历第一位,中序序列的树根前面的字符串是其左子树,后面是右子树。再将左子树和右子树的序列分别作为一棵树进入递归,对其重复找出树根和左右子树的处理,原创 2020-07-24 21:28:29 · 533 阅读 · 0 评论 -
数据结构与算法——7-22 堆栈模拟队列 (25分)
7-22 堆栈模拟队列 (25分)设已知有两个堆栈S1和S2,请用这两个堆栈模拟出一个队列Q。所谓用堆栈模拟队列,实际上就是通过调用堆栈的下列操作函数:int IsFull(Stack S):判断堆栈S是否已满,返回1或0;int IsEmpty (Stack S ):判断堆栈S是否为空,返回1或0;void Push(Stack S, ElementType item ):将元素item压入堆栈S;ElementType Pop(Stack S ):删除并返回S的栈顶元素。实现队列的操作,即原创 2020-07-24 18:08:20 · 400 阅读 · 0 评论 -
数据结构与算法——7-21 求前缀表达式的值 (25分)
7-21 求前缀表达式的值 (25分)算术表达式有前缀表示法、中缀表示法和后缀表示法等形式。前缀表达式指二元运算符位于两个运算数之前,例如2+3*(7-4)+8/4的前缀表达式是:+ + 2 * 3 - 7 4 / 8 4。请设计程序计算前缀表达式的结果值。输入格式:输入在一行内给出不超过30个字符的前缀表达式,只包含+、-、*、/以及运算数,不同对象(运算数、运算符号)之间以空格分隔。输出格式:输出前缀表达式的运算结果,保留小数点后1位,或错误信息ERROR。#include <iost原创 2020-07-24 16:35:13 · 777 阅读 · 0 评论 -
数据结构与算法——7-20 表达式转换 (25分)
7-20 表达式转换 (25分)算术表达式有前缀表示法、中缀表示法和后缀表示法等形式。日常使用的算术表达式是采用中缀表示法,即二元运算符位于两个运算数中间。请设计程序将中缀表达式转换为后缀表达式。输入格式:输入在一行中给出不含空格的中缀表达式,可包含+、-、*、\以及左右括号(),表达式不超过20个字符。输出格式:在一行中输出转换后的后缀表达式,要求不同对象(运算数、运算符号)之间以空格分隔,但结尾不得有多余空格。思路:转化为后缀表达式就是出栈入栈的操作,分为是操作符还是操作符部分,并注意判断正原创 2020-07-23 22:35:43 · 2965 阅读 · 0 评论 -
数据结构与算法——7-19 求链式线性表的倒数第K项 (20分)
7-19 求链式线性表的倒数第K项 (20分)给定一系列正整数,请设计一个尽可能高效的算法,查找倒数第K个位置上的数字。输入格式:输入首先给出一个正整数K,随后是若干非负整数,最后以一个负整数表示结尾(该负数不算在序列内,不要处理)。输出格式:输出倒数第K个位置上的数据。如果这个位置不存在,输出错误信息NULL。思路:首先定义结点结构体,输入正整数k,建立头结点,指针L指向头结点,再创建一临时指针p,采用头插法来实现链表,完成后链表遍历至k-1处也就是第k项,如果不为空就输出,#include原创 2020-07-23 16:46:20 · 903 阅读 · 0 评论 -
数据结构与算法——7-18 银行业务队列简单模拟 (25分)
7-18 银行业务队列简单模拟 (25分)设某银行有A、B两个业务窗口,且处理业务的速度不一样,其中A窗口处理速度是B窗口的2倍 —— 即当A窗口每处理完2个顾客时,B窗口处理完1个顾客。给定到达银行的顾客序列,请按业务完成的顺序输出顾客序列。假定不考虑顾客先后到达的时间间隔,并且当不同窗口同时处理完2个顾客时,A窗口顾客优先输出。输入格式:输入为一行正整数,其中第1个数字N(≤1000)为顾客总数,后面跟着N位顾客的编号。编号为奇数的顾客需要到A窗口办理业务,为偶数的顾客则去B窗口。数字间以空格分隔原创 2020-07-18 22:58:29 · 439 阅读 · 0 评论 -
数据结构与算法——7-17 汉诺塔的非递归实现 (25分)
7-17 汉诺塔的非递归实现 (25分)借助堆栈以非递归(循环)方式求解汉诺塔的问题(n, a, b, c),即将N个盘子从起始柱(标记为“a”)通过借助柱(标记为“b”)移动到目标柱(标记为“c”),并保证每个移动符合汉诺塔问题的要求。输入格式:输入为一个正整数N,即起始柱上的盘数。输出格式:每个操作(移动)占一行,按柱1 -> 柱2的格式输出。思路:经典汉诺塔问题,非递归通过使用栈的方式模拟圆盘,通过出栈的方式来移动圆盘,而递归方式则是先移动n-1个到临时盘,再将最后一个移动到最终盘,原创 2020-07-18 22:47:18 · 4789 阅读 · 2 评论 -
数据结构与算法——7-16 一元多项式求导 (20分)
7-16 一元多项式求导 (20分)设计函数求一元多项式的导数。输入格式:以指数递降方式输入多项式非零项系数和指数(绝对值均为不超过1000的整数)。数字间以空格分隔。输出格式:以与输入相同的格式输出导数多项式非零项的系数和指数。数字间以空格分隔,但结尾不能有多余空格。思路:c++直接一对一对输入,分别输出即可,如果对数不止1个且最后一项系数为0则不用输出,否则输出0 0,用c语言就是使用if将每个情况都列出来即可#include <iostream>using namespac原创 2020-07-17 21:59:39 · 1408 阅读 · 0 评论 -
数据结构与算法——7-15 QQ帐户的申请与登陆 (25分)
7-15 QQ帐户的申请与登陆 (25分)实现QQ新帐户申请和老帐户登陆的简化版功能。最大挑战是:据说现在的QQ号码已经有10位数了。输入格式:输入首先给出一个正整数N(≤105),随后给出N行指令。每行指令的格式为:“命令符(空格)QQ号码(空格)密码”。其中命令符为“N”(代表New)时表示要新申请一个QQ号,后面是新帐户的号码和密码;命令符为“L”(代表Login)时表示是老帐户登陆,后面是登陆信息。QQ号码为一个不超过10位、但大于1000(据说QQ老总的号码是1001)的整数。密码为不小于6原创 2020-07-17 17:53:52 · 1126 阅读 · 0 评论 -
数据结构与算法——7-14 电话聊天狂人 (25分)
7-14 电话聊天狂人 (25分)给定大量手机用户通话记录,找出其中通话次数最多的聊天狂人。输入格式:输入首先给出正整数N(≤105 ),为通话记录条数。随后N行,每行给出一条通话记录。简单起见,这里只列出拨出方和接收方的11位数字构成的手机号码,其中以空格分隔。输出格式:在一行中给出聊天狂人的手机号码及其通话次数,其间以空格分隔。如果这样的人不唯一,则输出狂人中最小的号码及其通话次数,并且附加给出并列狂人的人数思路:采用散列(哈希)表查找,散列技术是在记录的存储位置和他的关键字之间建立一个确定原创 2020-07-13 22:35:37 · 715 阅读 · 0 评论 -
数据结构与算法——7-13 统计工龄 (20分)
7-13 统计工龄 (20分)给定公司N名员工的工龄,要求按工龄增序输出每个工龄段有多少员工。输入格式:输入首先给出正整数N(≤105),即员工总人数;随后给出N个整数,即每个员工的工龄,范围在[0, 50]。输出格式:按工龄的递增顺序输出每个工龄的员工个数,格式为:“工龄:人数”。每项占一行。如果人数为0则不输出该项。思路:由于之前已经总结了排序方法,这里直接采用懒狗写法,利用数组下标间接排序 再输出就行#include<stdio.h>int main(){ in原创 2020-07-13 14:29:18 · 925 阅读 · 0 评论 -
数据结构与算法——7-12 排序 (25分)(排序方法总结)
7-12 排序 (25分)给定N个(长整型范围内的)整数,要求输出从小到大排序后的结果。本题旨在测试各种不同的排序算法在各种数据情况下的表现。各组测试数据特点如下:数据1:只有1个元素;数据2:11个不相同的整数,测试基本正确性;数据3:103个随机整数;数据4:104个随机整数;数据5:105个随机整数;数据6:105个顺序整数;数据7:105个逆序整数;数据8:105个基本有序的整数;数据9:105个随机正整数,每个数字不超过1000。输入格式:输入第一行给出正整数N(≤105原创 2020-07-13 12:04:43 · 4844 阅读 · 0 评论 -
数据结构与算法——7-11 关键活动 (30分)
7-11 关键活动 (30分)假定一个工程项目由一组子任务构成,子任务之间有的可以并行执行,有的必须在完成了其它一些子任务后才能执行。“任务调度”包括一组子任务、以及每个子任务可以执行所依赖的子任务集。比如完成一个专业的所有课程学习和毕业设计可以看成一个本科生要完成的一项工程,各门课程可以看成是子任务。有些课程可以同时开设,比如英语和C程序设计,它们没有必须先修哪门的约束;有些课程则不可以同时开设,因为它们有先后的依赖关系,比如C程序设计和数据结构两门课,必须先学习前者。但是需要注意的是,对一组子任务原创 2020-07-12 14:46:18 · 1351 阅读 · 0 评论 -
数据结构与算法——7-10 公路村村通 (30分)
7-10 公路村村通 (30分)现有村落间道路的统计数据表中,列出了有可能建设成标准公路的若干条道路的成本,求使每个村落都有公路连通所需要的最低成本。输入格式:输入数据包括城镇数目正整数N(≤1000)和候选道路数目M(≤3N);随后的M行对应M条道路,每行给出3个正整数,分别是该条道路直接连通的两个城镇的编号以及该道路改建的预算成本。为简单起见,城镇从1到N编号。输出格式:输出村村通需要的最低成本。如果输入数据不足以保证畅通,则输出−1,表示需要建设更多公路。思路:这道题是最小生成树问题,这里原创 2020-07-11 17:28:02 · 966 阅读 · 0 评论 -
数据结构与算法——7-9 旅游规划 (25分)
7-9 旅游规划 (25分)有了一张自驾旅游路线图,你会知道城市间的高速公路长度、以及该公路要收取的过路费。现在需要你写一个程序,帮助前来咨询的游客找一条出发地和目的地之间的最短路径。如果有若干条路径都是最短的,那么需要输出最便宜的一条路径。输入格式:输入说明:输入数据的第1行给出4个正整数N、M、S、D,其中N(2≤N≤500)是城市的个数,顺便假设城市的编号为0~(N−1);M是高速公路的条数;S是出发地的城市编号;D是目的地的城市编号。随后的M行中,每行给出一条高速公路的信息,分别是:城市1、城原创 2020-07-10 00:01:15 · 1383 阅读 · 0 评论 -
数据结构与算法——7-8 哈利·波特的考试 (25分)
7-8 哈利·波特的考试 (25分)哈利·波特要考试了,他需要你的帮助。这门课学的是用魔咒将一种动物变成另一种动物的本事。例如将猫变成老鼠的魔咒是haha,将老鼠变成鱼的魔咒是hehe等等。反方向变化的魔咒就是简单地将原来的魔咒倒过来念,例如ahah可以将老鼠变成猫。另外,如果想把猫变成鱼,可以通过念一个直接魔咒lalala,也可以将猫变老鼠、老鼠变鱼的魔咒连起来念:hahahehe。现在哈利·波特的手里有一本教材,里面列出了所有的变形魔咒和能变的动物。老师允许他自己带一只动物去考场,要考察他把这只动物原创 2020-07-09 16:43:40 · 1473 阅读 · 0 评论 -
数据结构——最短路径问题(二)弗洛伊德(Floyd)算法
弗洛伊德(Floyd)算法算法思路:(学习过程中的个人理解,欢迎指导!)首先是建图,同时定义两个二维数组,类似于迪杰斯特拉算法中的数组作用,二维数组D代表顶点到顶点的最短路径权值和的矩阵,二维数组P代表对应顶点的最小路径的前驱矩阵如图,进行初始化后 分别命名为D-1和P-1接下来是三层循环嵌套,v代表起始顶点,w代表结束顶点,k代表中转顶点的下标K依次变化,k=0时,代表所有顶点都经过v0中转,此时无任何变化,当k=1时,都经过v1中转此时 D[0][2]=5<D[0][1]+D[1][2原创 2020-07-08 23:56:04 · 463 阅读 · 0 评论 -
数据结构——最短路径问题(一) 迪杰斯特拉算法
数据结构——最短路径问题最短路径,是指两顶点之间经过的边上权值之和最少的路径,并且我们称路径上的第一个顶点是源点,最后一个顶点是终点。1.迪杰斯特拉(Dijkstra) 算法个人浅薄理解:首先以邻接矩阵的方式建图比如以这上面的图为例初始化图之后。分别定义存储最短路径权值和的数组ShortPathTable[] 按照邻接矩阵所存权值进行初始化比如这张图中D数组初始化为{65535,1,5,65535,65535,65535,65535,65535,65535}和用于存储最短路径下标的数组P原创 2020-07-08 21:45:05 · 790 阅读 · 0 评论 -
数据结构与算法——7-7 六度空间 (30分)
7-7 六度空间 (30分)输入格式:输入第1行给出两个正整数,分别表示社交网络图的结点数N(1<N≤103 ,表示人数)、边数M(≤33×N,表示社交关系数)。随后的M行对应M条边,每行给出一对正整数,分别是该条边直接连通的两个结点的编号(节点从1到N编号)。输出格式:对每个结点输出与该结点距离不超过6的结点数占结点总数的百分比,精确到小数点后2位。每个结节点输出一行,格式为“结点编号:(空格)百分比%”。#include <stdio.h>#include <原创 2020-07-08 00:23:08 · 1814 阅读 · 0 评论 -
数据结构与算法——7-6 列出连通集 (25分)
7-6 列出连通集 (25分)给定一个有N个顶点和E条边的无向图,请用DFS和BFS分别列出其所有的连通集。假设顶点从0到N−1编号。进行搜索时,假设我们总是从编号最小的顶点出发,按编号递增的顺序访问邻接点。输入格式:输入第1行给出2个整数N(0<N≤10)和E,分别是图的顶点数和边数。随后E行,每行给出一条边的两个端点。每行中的数字之间用1空格分隔。输出格式:按照"{ v1 v2… vk}"的格式,每行输出一个连通集。先输出DFS的结果,再输出BFS的结果。思路:首先建图,这里采用邻接矩原创 2020-07-07 16:18:10 · 1746 阅读 · 1 评论 -
数据结构与算法——7-5 堆中的路径 (25分)
7-5 堆中的路径 (25分)将一系列给定数字插入一个初始为空的小顶堆H[]。随后对任意给定的下标i,打印从H[i]到根结点的路径。输入格式:每组测试第1行包含2个正整数N和M(≤1000),分别是插入元素的个数、以及需要打印的路径条数。下一行给出区间[-10000, 10000]内的N个要被插入一个初始为空的小顶堆的整数。最后一行给出M个下标。输出格式:对输入中给出的每个下标i,在一行中输出从H[i]到根结点的路径上的数据。数字间以1个空格分隔,行末不得有多余空格。思路:采用数组建堆,将数组第原创 2020-07-05 16:12:22 · 726 阅读 · 0 评论 -
数据结构与算法——7-4 是否同一棵二叉搜索树 (25分)
7-4 是否同一棵二叉搜索树 (25分)给定一个插入序列就可以唯一确定一棵二叉搜索树。然而,一棵给定的二叉搜索树却可以由多种不同的插入序列得到。例如分别按照序列{2, 1, 3}和{2, 3, 1}插入初始为空的二叉搜索树,都得到一样的结果。于是对于输入的各种插入序列,你需要判断它们是否能生成一样的二叉搜索树。输入格式:输入包含若干组测试数据。每组数据的第1行给出两个正整数N (≤10)和L,分别是每个序列插入元素的个数和需要检查的序列个数。第2行给出N个以空格分隔的正整数,作为初始插入序列。最后L行原创 2020-07-05 16:05:49 · 823 阅读 · 0 评论 -
数据结构与算法——7-3 树的同构 (25分)
7-3 树的同构 (25分)现给定两棵树,请你判断它们是否是同构的。输入格式:输入给出2棵二叉树树的信息。对于每棵树,首先在一行中给出一个非负整数N (≤10),即该树的结点数(此时假设结点从0到N−1编号);随后N行,第i行对应编号第i个结点,给出该结点中存储的1个英文大写字母、其左孩子结点的编号、右孩子结点的编号。如果孩子结点为空,则在相应位置上给出“-”。给出的数据间用一个空格分隔。注意:题目保证每个结点中存储的字母是不同的。输出格式:如果两棵树是同构的,输出“Yes”,否则输出“No”。原创 2020-07-03 23:07:59 · 353 阅读 · 0 评论 -
数据结构与算法——7-2 一元多项式的乘法与加法运算 (20分)
设计函数分别求两个一元多项式的乘积与和。输入格式:输入分2行,每行分别先给出多项式非零项的个数,再以指数递降方式输入一个多项式非零项系数和指数(绝对值均为不超过1000的整数)。数字间以空格分隔。输出格式:输出分2行,分别以指数递降方式输出乘积多项式以及和多项式非零项的系数和指数。数字间以空格分隔,但结尾不能有多余空格。零多项式应输出0 0。输入样例:4 3 4 -5 2 6 1 -2 03 5 20 -7 4 3 1输出样例:15 24 -25 22 30 21 -10 2原创 2020-07-03 22:41:19 · 1353 阅读 · 0 评论 -
数据结构与算法——7-1 最大子列和问题 (20分)
7-1 最大子列和问题 (20分)给定K个整数组成的序列{ N1, N2, …, NK},“连续子列”被定义为{ Ni, Ni+1, …,Nj},其中 1≤i≤j≤K。“最大子列和”则被定义为所有连续子列元素的和中最大者。例如给定序列{ -2, 11, -4, 13, -5, -2 },其连续子列{ 11, -4, 13 }有最大的和20。现要求你编写程序,计算给定整数序列的最大子列和。本题旨在测试各种不同的算法在各种数据情况下的表现。各组测试数据特点如下:数据1:与样例等价,测试基本正确性;原创 2020-06-29 23:56:39 · 1073 阅读 · 0 评论 -
数据结构与算法——6-12 二叉搜索树的操作集 (30分)
6-12 二叉搜索树的操作集 (30分)6-12 二叉搜索树的操作集 (30分)本题要求实现给定二叉搜索树的5种常用操作。函数接口定义:BinTree Insert( BinTree BST, ElementType X );BinTree Delete( BinTree BST, ElementType X );Position Find( BinTree BST, ElementType X );Position FindMin( BinTree BST );Position FindM原创 2020-06-29 18:05:40 · 372 阅读 · 0 评论 -
数据结构与算法——6-11 先序输出叶结点 (15分)
6-11 先序输出叶结点 (15分)本题要求按照先序遍历的顺序输出给定二叉树的叶结点。函数接口定义:void PreorderPrintLeaves( BinTree BT );其中BinTree结构定义如下:typedef struct TNode *Position;typedef Position BinTree;struct TNode{ElementType Data;BinTree Left;BinTree Right;};函数PreorderPrintLeave原创 2020-06-29 17:03:28 · 283 阅读 · 0 评论 -
数据结构与算法——6-10 二分查找 (20分)
6-10 二分查找 (20分)本题要求实现二分查找算法。函数接口定义:Position BinarySearch( List L, ElementType X );其中List结构定义如下:typedef int Position;typedef struct LNode *List;struct LNode { ElementType Data[MAXSIZE]; Position Last; /* 保存线性表中最后一个元素的位置 */};L是用户传入的一个线性表,其原创 2020-06-29 14:10:33 · 407 阅读 · 2 评论 -
数据结构与算法——6-9 二叉树的遍历 (25分)
6-9 二叉树的遍历 (25分)本题要求给定二叉树的4种遍历。函数接口定义:void InorderTraversal( BinTree BT );void PreorderTraversal( BinTree BT );void PostorderTraversal( BinTree BT );void LevelorderTraversal( BinTree BT );其中BinTree结构定义如下typedef struct TNode *Position;typedef Posi原创 2020-06-29 12:16:40 · 377 阅读 · 0 评论