数据结构
abyss_silver
愿世事沧桑,不改你年轻笑容。
展开
-
6-1 带头结点的单链表就地逆置
本题要求编写函数实现带头结点的单链线性表的就地逆置操作函数。L是一个带头结点的单链表,函数ListReverse_L(LinkList &L)要求在不新开辟节点的前提下将单链表中的元素进行逆置,如原单链表元素依次为1,2,3,4,则逆置后为4,3,2,1。 函数接口定义:void ListReverse_L(LinkList &L);其中 L 是一个带头结点的单链表。 裁判测试程序样例://库函原创 2017-09-22 17:46:01 · 5693 阅读 · 0 评论 -
7-4 排座位
布置宴席最微妙的事情,就是给前来参宴的各位宾客安排座位。无论如何,总不能把两个死对头排到同一张宴会桌旁!这个艰巨任务现在就交给你,对任何一对客人,请编写程序告诉主人他们是否能被安排同席。 输入格式:输入第一行给出3个正整数:N(≤100),即前来参宴的宾客总人数,则这些人从1到N编号;M为已知两两宾客之间的关系数;K为查询的条数。随后M行,每行给出一对宾客之间的关系,格式为:宾客1 宾客2 关系,原创 2017-11-02 17:24:48 · 784 阅读 · 1 评论 -
6-4 二叉树求深度和叶子数
编写函数计算二叉树的深度以及叶子节点数。二叉树采用二叉链表存储结构 函数接口定义:int GetDepthOfBiTree ( BiTree T);int LeafCount(BiTree T);其中 T是用户传入的参数,表示二叉树根节点的地址。函数须返回二叉树的深度(也称为高度)。 裁判测试程序样例://头文件包含#include<stdlib.h>#include<stdio.h>原创 2017-10-17 19:25:43 · 1986 阅读 · 0 评论 -
7-2 列车调度
火车站的列车调度铁轨的结构如下图所示。 两端分别是一条入口(Entrance)轨道和一条出口(Exit)轨道,它们之间有N条平行的轨道。每趟列车从入口可以选择任意一条轨道进入,最后从出口离开。在图中有9趟列车,在入口处按照{8,4,2,5,3,9,1,6,7}的顺序排队等待进入。如果要求它们必须按序号递减的顺序从出口离开,则至少需要多少条平行铁轨用于调度? 输入格式:输入第一行给出一个整数N原创 2017-10-08 20:20:32 · 2847 阅读 · 0 评论 -
7-1 银行业务队列简单模拟
设某银行有A、B两个业务窗口,且处理业务的速度不一样,其中A窗口处理速度是B窗口的2倍 —— 即当A窗口每处理完2个顾客时,B窗口处理完1个顾客。给定到达银行的顾客序列,请按业务完成的顺序输出顾客序列。假定不考虑顾客先后到达的时间间隔,并且当不同窗口同时处理完2个顾客时,A窗口顾客优先输出。 输入格式:输入为一行正整数,其中第1个数字N(≤1000)为顾客总数,后面跟着N位顾客的编号。编号为奇数的原创 2017-10-08 20:12:31 · 1717 阅读 · 0 评论 -
6-1 爆内存函数实例
本题要求实现一个递归函数,用户传入非负整型参数n,用户依次输出1到n之间的整数。所谓递归函数就是指自己调用自己的函数。说明:(1)递归函数求解问题的基本思想是把一个大规模问题的求解归结为一个相对较小规模问题的求解,小规模归结为小小规模,以此类推,直至问题规模小至边界(边界问题可直接求解)。递归函数由两部分组成,一部分为递归边界,另一部分为递归关系式。以求阶乘函数为例,递归边界Factorial(原创 2017-09-12 17:11:58 · 1619 阅读 · 4 评论 -
7-1 堆栈操作合法性
假设以S和X分别表示入栈和出栈操作。如果根据一个仅由S和X构成的序列,对一个空堆栈进行操作,相应操作均可行(如没有出现删除时栈空)且最后状态也是栈空,则称该序列是合法的堆栈操作序列。请编写程序,输入S和X序列,判断该序列是否合法。 输入格式:输入第一行给出两个正整数N和M,其中N是待测序列的个数,M(≤50)是堆栈的最大容量。随后N行,每行中给出一个仅由S和X构成的序列。序列保证不为空,且长度不超原创 2017-09-28 21:16:19 · 14870 阅读 · 0 评论 -
7-3 求链式线性表的倒数第K项
给定一系列正整数,请设计一个尽可能高效的算法,查找倒数第K个位置上的数字。 输入格式:输入首先给出一个正整数K,随后是若干正整数,最后以一个负整数表示结尾(该负数不算在序列内,不要处理)。 输出格式:输出倒数第K个位置上的数据。如果这个位置不存在,输出错误信息NULL。 输入样例:4 1 2 3 4 5 6 7 8 9 0 -1输出样例:7有一个一分的bug,没有改出来,欢迎大佬指点 代码:原创 2017-09-28 21:14:38 · 1711 阅读 · 0 评论 -
6-2 单链表元素定位(12 分)
本题要求在链表中查找第一个数据域取值为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-09-10 10:54:24 · 2669 阅读 · 0 评论 -
6-1 循环单链表区间删除(15 分)
本题要求实现带头结点的循环单链表的创建和单链表的区间删除。L是一个带头结点的循环单链表,函数ListCreate_CL用于创建一个循环单链表,函数ListDelete_CL用于删除取值大于min小于max的链表元素。函数接口定义: Status ListCreate_CL(LinkList &CL); void ListDelete_CL(LinkList &C原创 2017-09-10 10:53:19 · 3010 阅读 · 0 评论 -
7-1 数组循环左移
本题要求实现一个对数组进行循环左移的简单函数:一个数组a中存有n(>0)个整数,在不允许使用另外数组的前提下,将每个整数循环向左移m(≥0)个位置,即将a中的数据由(a0a1⋯an−1)变换为(am⋯an−1a0a1⋯am−1)(最前面的m个数循环移至最后面的m个位置)。如果还需要考虑程序移动数据的次数尽量少,要如何设计移动的方法?输入格式:输入第1行原创 2017-09-16 10:02:40 · 3275 阅读 · 0 评论 -
7-2 一元多项式求导
设计函数求一元多项式的导数。 输入格式:以指数递降方式输入多项式非零项系数和指数(绝对值均为不超过1000的整数)。数字间以空格分隔。 输出格式:以与输入相同的格式输出导数多项式非零项的系数和指数。数字间以空格分隔,但结尾不能有多余空格。 输入样例:3 4 -5 2 6 1 -2 0输出样例:12 3 -10 1 6 0代码:#include<stdio.h>int main(){转载 2017-09-23 23:11:11 · 1096 阅读 · 0 评论 -
6-2 有序顺序表的插入
本题要求实现递增顺序表的有序插入函数。L是一个递增的有序顺序表,函数Status ListInsert_SortedSq(SqList &L, ElemType e)用于向顺序表中按递增的顺序插入一个数据。比如:原数据有:2 5,要插入一个元素3,那么插入后顺序表为2 3 5。要考虑扩容的问题。函数接口定义:Status ListInsert_SortedSq(SqList原创 2017-09-14 22:43:38 · 3339 阅读 · 2 评论 -
6-1 顺序表创建和就地逆置
本题要求实现顺序表的创建和就地逆置操作函数。L是一个顺序表,函数ListCreate_Sq(SqList &L)用于创建一个顺序表,函数ListReverse_Sq(SqList &L)是在不引入辅助数组的前提下将顺序表中的元素进行逆置,如原顺序表元素依次为1,2,3,4,则逆置后为4,3,2,1。函数接口定义:Status ListCreate_Sq(SqList &L);原创 2017-09-14 22:34:29 · 1529 阅读 · 0 评论 -
7-2 两个有序链表序列的交集
已知两个非降序链表序列S1与S2,设计函数构造出S1与S2的交集新链表S3。 输入格式:输入分两行,分别在每行给出由若干个正整数构成的非降序序列,用−1表示序列的结尾(−1不属于这个序列)。数字用空格间隔。 输出格式:在一行中输出两个输入序列的交集序列,数字间用空格分开,结尾不能有多余空格;若新链表为空,输出NULL。 输入样例:1 2 5 -12 4 5 8 10 -1输出样例:2 5代码原创 2017-09-22 17:52:12 · 1655 阅读 · 0 评论 -
7-1 两个有序链表序列的合并
已知两个非降序链表序列S1与S2,设计函数构造出S1与S2的并集新非降序链表S3。 输入格式:输入分两行,分别在每行给出由若干个正整数构成的非降序序列,用−1表示序列的结尾(−1不属于这个序列)。数字用空格间隔。 输出格式:在一行中输出合并后新的非降序链表,数字间用空格分开,结尾不能有多余空格;若新链表为空,输出NULL。 输入样例:1 3 5 -12 4 6 8 10 -1输出样例:1 2原创 2017-09-22 17:50:42 · 2107 阅读 · 0 评论 -
7-3 jmu-ds-单链表的基本运算
实现单链表的基本运算:初始化、插入、删除、求表的长度、判空、释放。 (1)初始化单链表L,输出L->next的值; (2)依次采用尾插法插入元素:输入分两行数据,第一行是尾插法需要插入的字符数据的个数,第二行是具体插入的字符数据。 (3)输出单链表L; (4)输出单链表L的长度; (5)判断单链表L是否为空; (6)输出单链表L的第3个元素; (7)输出元素a的位置; (8)在第4个原创 2017-09-22 17:49:04 · 3811 阅读 · 0 评论 -
7-1 畅通工程之局部最小花费问题
某地区经过对城镇交通状况的调查,得到现有城镇间快速道路的统计数据,并提出“畅通工程”的目标:使整个地区任何两个城镇间都可以实现快速交通(但不一定有直接的快速道路相连,只要互相间接通过快速路可达即可)。现得到城镇道路统计表,表中列出了任意两城镇间修建快速路的费用,以及该道路是否已经修通的状态。现请你编写程序,计算出全地区畅通需要的最低成本。 输入格式:输入的第一行给出村庄数目N (1≤N≤100);原创 2017-11-02 23:19:37 · 3249 阅读 · 1 评论