课后作业
一笑照夜
一片柳叶吹成雪
展开
-
【数据结构】课后作业——数组元素循环左移
P18.10n个整数存放到一位数组R中,将R中的元素循环左移p个位置。(1)算法的基本设计思想创建另外一个数组_R,将排序后的元素放在_R中,然后利用_R更新R。时空复杂度都贼鸡儿丢人。(2)代码如下#include <stdio.h>void main(){ int R[10]; int count; int p; scanf("%d", &am...原创 2018-08-01 10:31:30 · 1825 阅读 · 0 评论 -
【数据结构】——关键路径 给出一个图,输出所有关键路径
一、概述给出一个图,首先判断是否为有向无环图,如果是,则输出要求的边的最早发生时间和最晚发生时间,然后输出所有关键路径。判断是否为有向无环图,可以用拓扑排序来判断。二、分析首先分析拓扑排序。使用邻接矩阵储存图。拓扑排序要用到的有:入度数组,队列。入度数组判断哪些元素入队。如下:int topo(int s){ if(indegree[s]!=0) ret...原创 2019-03-13 23:08:07 · 2835 阅读 · 0 评论 -
【数据结构】课后作业——仅保留链表中绝对值相同的第一个数
P38.23有一个整型链表,共有m个元素,每个元素都不大于n。保留遇到的所有绝对值相同中的元素中的第一个,其余删除。(1)算法的基本设计思想取三个指针。第一个一个一个往后,第二个在第一个为某个值时一个一个往后,第三个作为第二个的前驱。第一个为某个值时,第二个将其后所有值与其比较,删除相同的值。第一个值不断往后直到最后一个。(2)代码如下#include <stdio...原创 2018-08-08 16:03:06 · 688 阅读 · 0 评论 -
【数据结构】课后作业——返回后缀中的第一个元素
P38.22有A、B两个字符串,以链表形式存放。他们有相同的后缀,请给出后缀的第一个字母。(1)算法的基本设计思想分别遍历一遍链表并将其倒置为新的链表。则两个新的链表的第一个不同的元素之前的元素就是所需的元素。倒置采用的是头插法来生成两个新的链表。(2)代码如下#include <stdio.h>#include <stdlib.h>typed...原创 2018-08-08 14:43:26 · 135 阅读 · 0 评论 -
【数据结构】课后作业——求A链表与B链表的交集,保存在A链表中
P37.15有两个递增整型链表A,B。求A链表中与B链表中元素相同的元素,保存在A链表中,其余的A中的元素删除。(1)算法的基本设计思想设置三个指针。一个指向A链表的结点,一个指向B链表的结点。一个指向A结点的前驱。判断是否相等,相等则结点均往后,不相等则A大B小时B往后,A小B大时A删除。由于已经有了之前的经验,因此该问题并不十分困难。(2)代码如下#include...原创 2018-08-15 15:51:09 · 4298 阅读 · 1 评论 -
【数据结构】课后作业——返回倒数第k个数
P38.21有n个整数存放到链表L中,返回倒数第k个元素。(1)算法的基本设计思想遍历一遍链表,得到链表元素总数,然后再次遍历得到倒数第k个元素。(2)代码如下#include <stdio.h>#include <stdlib.h>typedef int ElemType;typedef struct LNode { ElemType dat...原创 2018-08-08 10:28:46 · 443 阅读 · 0 评论 -
【数据结构】课后作业——递归删除链表中的多余相同元素
P37.1有一个整型链表,删除第二次甚至更多次出现的元素。(1)算法的基本设计思想之前没有写过递归函数,因此用来练习。设链表的两个结点A,B。B是A的下一结点。声明函数Del,首先判断链表是否到了尾部,方法是判断B是否为空,如果是,返回0。如果不是,判断该节点A是否与其下一节点B相等,若相等,则删除下一元素B,并从A开始再次调用Del;若不相等,则从B开始调用Del。注意递归函...原创 2018-08-15 10:41:55 · 827 阅读 · 1 评论 -
【数据结构】课后作业——链表分离
P37.11有一个整型链表,元素为{a1,b1,a2,b2,......,an,bn}。将其分离为A、B两个链表,使得A={a1,a2,......,an},B={bn,......,b2,b1}。(1)算法的基本设计思想遍历原链表,取第一个元素尾插到A,第二个元素头插到B。以此类推。链表具有头结点,因此需要从头结点的后继开始。注意头插时遇到的问题,头插法是把B的头指针指向...原创 2018-08-15 14:56:46 · 426 阅读 · 0 评论 -
【数据结构】课后作业——原地逆置链表
P37.5有一个整型链表,将其原地逆置,即使用的辅助空间复杂度为O(1)。(1)算法的基本设计思想之前用了递归,效果不错,因此准备该函数也使用递归。基本思想是一层递归函数有一个对应的节点指针,那么通过将该节点指针的next的next指向自身,便可以实现下一个节点指向本节点的操作。注意以下几点:实现功能需要一层有一个自己的对应的指针变量,因此在实现的时候,注意传参的表达。不能另外...原创 2018-08-15 13:16:29 · 678 阅读 · 0 评论 -
【数据结构】课后作业——返回主元素
P18.12有n个整数存放到一维数组A中,若数组中存在个数大于一半的元素,输出该元素,称其为主元素。(1)算法的基本设计思想由题设数组元素大小的限制,我们可以另外新建一个数组A',负责计算各元素个数。例如遍历后发现数组中6有5个,则A'[6]=5。以此类推。(2)代码如下#include <stdio.h>#include <malloc.h>#i...原创 2018-08-01 14:29:05 · 600 阅读 · 0 评论 -
【数据结构】课后作业——返回中位数
P18.11分别有m,n个整数存放到一位数组A,B中,将两数组合并并找出合并后数组的中位数。(1)算法的基本设计思想新建一个数组,将A,B元素按从小到大的顺序放在新数组中,然后返回。(2)代码如下#include <stdio.h>#include <malloc.h>#include <math.h>unsigned int* ar...原创 2018-08-01 13:06:54 · 415 阅读 · 0 评论 -
【数据结构】二叉树——根据中序和层序重建树,并输出给定值
一、概述给出一棵二叉树的中序和层序遍历,输出前序和后序遍历。并分别输出其从右往左看,从右上往左下看,从上往下看能够看到的节点数量。注意节点可以互相覆盖,边之间的角度都是九十度。二、分析核心就在于重建树。我们之前重建树都是不涉及层序的,因为只要涉及层序遍历,重建树的画风就不一样了。先看原来的,以前序中序重建二叉树为例。我们这样做:根据前序找到根,在中序定位根;在中序找到左右子...原创 2019-03-07 13:52:56 · 1442 阅读 · 0 评论