浙大数据结构
课后作业
摩天佳迪斯
不是你死就是我生
展开
-
习题3.6 一元多项式的乘法与加法运算 (20point(s))
习题3.6 一元多项式的乘法与加法运算 (20point(s))设计函数分别求两个一元多项式的乘积与和。输入格式:输入分2行,每行分别先给出多项式非零项的个数,再以指数递降方式输入一个多项式非零项系数和指数(绝对值均为不超过1000的整数)。数字间以空格分隔。输出格式:输出分2行,分别以指数递降方式输出乘积多项式以及和多项式非零项的系数和指数。数字间以空格分隔,但结尾不能有多余空格。零多项式应输出0 0。输入样例:4 3 4 -5 2 6 1 -2 03 5 20 -7 4 3 1原创 2020-12-04 16:18:00 · 131 阅读 · 0 评论 -
习题3.5 求链表的倒数第m个元素 (20point(s))
习题3.5 求链表的倒数第m个元素 (20point(s))请设计时间和空间上都尽可能高效的算法,在不改变链表的前提下,求链式存储的线性表的倒数第m(>0)个元素。函数接口定义:ElementType Find( List L, int m );其中List结构定义如下:typedef struct Node *PtrToNode;struct Node { ElementType Data; /* 存储结点数据 */ PtrToNode Next; /* 指向下一个原创 2020-12-04 14:30:25 · 299 阅读 · 0 评论 -
习题3.4 最长连续递增子序列 (20point(s))
习题3.4 最长连续递增子序列 (20point(s))用两个指针实时记录连续递增序列的位置o(n)#include<iostream>#include<stdio.h>#include <stdlib.h>using namespace std;const int MAXSIZE = 100000 + 10;int data[MAXSIZE];int main(){ int n; cin>>n; for(int i=原创 2020-12-04 14:17:31 · 175 阅读 · 0 评论 -
习题3.3 线性表元素的区间删除 (20point(s))
习题3.3 线性表元素的区间删除 (20point(s))给定一个顺序存储的线性表,请设计一个函数删除所有值大于min而且小于max的元素。删除后表中剩余元素保持顺序存储,并且相对位置不能改变。函数接口定义:List Delete( List L, ElementType minD, ElementType maxD );其中List结构定义如下:typedef int Position;typedef struct LNode *List;struct LNode { Elemen原创 2020-12-04 13:33:10 · 323 阅读 · 0 评论 -
习题2.8 输出全排列 (20point(s))
习题2.8 输出全排列 (20point(s))暴力递归:#include<iostream>#include<cstdio>#include<string>using namespace std;const int MAXN=10;int hashTable[MAXN]={false};int P[MAXN];int n;void generateP(int index){ if(index>=n){ for(int i原创 2020-12-02 15:32:31 · 107 阅读 · 0 评论 -
习题2.7 弹球距离 (15point(s))
习题2.7 弹球距离 (15point(s))设有一个球从高度为h米的地方落下,碰到地面后又弹到高度为原来p倍的位置,然后又落下,再弹起,再落下…。请编写函数求初始高度为h的球下落后到基本停下来(高度小于给定阈值TOL)时在空中所经过的路程总和。函数接口定义:double dist( double h, double p );其中h是球的初始高度,p是球弹起高度与弹起前落下高度的比值;函数dist要返回球下落后到基本停下来时在空中所经过的路程总和。注意:当弹起的高度小于裁判程序定义的常数TOL时,原创 2020-12-03 13:08:54 · 395 阅读 · 0 评论 -
习题2.5 两个有序链表序列的合并 (15point(s))
习题2.5 两个有序链表序列的合并 (15point(s))本题要求实现一个函数,将两个链表表示的递增整数序列合并为一个非递减的整数序列。函数接口定义:List Merge( List L1, List L2 );其中List结构定义如下:typedef struct Node PtrToNode;struct Node {ElementType Data; / 存储结点数据 /PtrToNode Next; / 指向下一个结点的指针 /};typedef PtrToNode Lis原创 2020-12-02 16:31:28 · 107 阅读 · 0 评论 -
习题2.4 递增的整数序列链表的插入 (15point(s))
习题2.4 递增的整数序列链表的插入 (15point(s))本题要求实现一个函数,在递增的整数序列链表(带头结点)中插入一个新整数,并保持该序列的有序性。函数接口定义:List Insert( List L, ElementType X );其中List结构定义如下:typedef struct Node PtrToNode;struct Node {ElementType Data; / 存储结点数据 /PtrToNode Next; / 指向下一个结点的指针 /};typede原创 2020-12-02 15:49:58 · 157 阅读 · 0 评论 -
习题2.3 数列求和-加强版 (20point(s))
习题2.3 数列求和-加强版 (20point(s))给定某数字A(1≤A≤9)以及非负整数N(0≤N≤100000),求数列之和S=A+AA+AAA+⋯+AA⋯A(N个A)。例如A=1, N=3时,S=1+11+111=123。输入格式:输入数字A与非负整数N。输出格式:输出其N项数列之和S的值。输入样例:1 3输出样例:123使用大整数,逐项求和效率低o(n)#include<stdio.h>#include<iostream>using namesp原创 2020-12-02 14:23:53 · 265 阅读 · 0 评论 -
习题2.2 数组循环左移 (20point(s))
习题2.2 数组循环左移 (20point(s))本题要求实现一个对数组进行循环左移的简单函数:一个数组a中存有n(>0)个整数,在不允许使用另外数组的前提下,将每个整数循环向左移m(≥0)个位置,即将a中的数据由(a0a1⋯an−1)变换为(am⋯an−1 a0a1 ⋯am−1 )(最前面的m个数循环移至最后面的m个位置)。如果还需要考虑程序移动数据的次数尽量少,要如何设计移动的方法?输入格式:输入第1行给出正整数n(≤100)和整数m(≥0);第2行给出n个整数,其间以空格分隔。输出格式原创 2020-12-01 16:56:53 · 317 阅读 · 0 评论 -
习题2.1 简单计算器 (20point(s))
习题2.1 简单计算器 (20point(s))模拟简单运算器的工作。假设计算器只能进行加减乘除运算,运算数和结果都是整数,四种运算符的优先级相同,按从左到右的顺序计算。输入格式:输入在一行中给出一个四则运算算式,没有空格,且至少有一个操作数。遇等号”=”说明输入结束。输出格式:在一行中输出算式的运算结果,或者如果除法分母为0或有非法运算符,则输出错误信息“ERROR”。输入样例:1+2*10-10/2=输出样例:10#include<iostream>#include&l原创 2020-12-02 12:58:33 · 150 阅读 · 0 评论 -
实例1.1 最大子列和问题 (20point(s))
实例1.1 最大子列和问题 (20point(s))给定K个整数组成的序列{ N1, N2, …, NK},“连续子列”被定义为{ Ni, Ni+1, …, Nj},其中 1≤i≤j≤K。“最大子列和”则被定义为所有连续子列元素的和中最大者。例如给定序列{ -2, 11, -4, 13, -5, -2 },其连续子列{ 11, -4, 13 }有最大的和20。现要求你编写程序,计算给定整数序列的最大子列和。本题旨在测试各种不同的算法在各种数据情况下的表现。各组测试数据特点如下:数据1:与样例等价,测试原创 2020-12-01 15:48:37 · 107 阅读 · 0 评论