![](https://img-blog.csdnimg.cn/20201014180756926.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
;链表
今天写算法了吗
这个作者很懒,什么都没留下…
展开
-
3-6 银行业务队列简单模拟 (20分) pta c语言链表 c++queue
3-6 银行业务队列简单模拟 (20分)设某银行有A、B两个业务窗口,且处理业务的速度不一样,其中A窗口处理速度是B窗口的2倍 —— 即当A窗口每处理完2个顾客时,B窗口处理完1个顾客。给定到达银行的顾客序列,请按业务完成的顺序输出顾客序列。假定不考虑顾客先后到达的时间间隔,并且当不同窗口同时处理完2个顾客时,A窗口顾客优先输出。输入格式:输入为一行正整数,其中第1个数字N(≤1000)为顾客总数,后面跟着N位顾客的编号。编号为奇数的顾客需要到A窗口办理业务,为偶数的顾客则去B窗口。数字间以空格分隔。原创 2020-10-19 17:45:17 · 833 阅读 · 0 评论 -
3-3 另类循环队列 (20分) pta 函数块
3-3 另类循环队列 (20分)如果用一个循环数组表示队列,并且只设队列头指针Front,不设尾指针Rear,而是另设Count记录队列中元素个数。请编写算法实现队列的入队和出队操作。函数接口定义:bool AddQ( Queue Q, ElementType X );ElementType DeleteQ( Queue Q );其中Queue结构定义如下:typedef int Position;typedef struct QNode *PtrToQNode;struct QNode.原创 2020-10-16 20:41:27 · 394 阅读 · 0 评论 -
6-1 在一个数组中实现两个堆栈 (20分)
本题要求在一个数组中实现两个堆栈。函数接口定义:Stack CreateStack( int MaxSize );bool Push( Stack S, ElementType X, int Tag );ElementType Pop( Stack S, int Tag );其中Tag是堆栈编号,取1或2;MaxSize堆栈数组的规模;Stack结构定义如下:typedef int Position;struct SNode {ElementType *Data;Position Top1原创 2020-11-17 13:39:21 · 1162 阅读 · 0 评论 -
6-5 共享后缀的链表 (20分)
有一种存储英文单词的方法,是把单词的所有字母串在一个单链表上。为了节省一点空间,如果有两个单词有同样的后缀,就让它们共享这个后缀。下图给出了单词“loading”和“being”的存储形式。本题要求你找出两个链表的公共后缀。函数接口定义:PtrToNode Suffix( List L1, List L2 );其中List结构定义如下:typedef struct Node PtrToNode;struct Node {ElementType Data; / 存储结点数据 /PtrToNod原创 2020-11-17 14:03:49 · 821 阅读 · 0 评论 -
3-5 单链表分段逆转 pta
3-5 单链表分段逆转 (20分)给定一个带头结点的单链表和一个整数K,要求你将链表中的每K个结点做一次逆转。例如给定单链表 1→2→3→4→5→6 和 K=3,你需要将链表改造成 3→2→1→6→5→4;如果 K=4,则应该得到 4→3→2→1→5→6。函数接口定义:void K_Reverse( List L, int K );其中List结构定义如下:typedef struct Node PtrToNode;struct Node {ElementType Data; / 存储结点数据原创 2020-10-19 13:43:36 · 2046 阅读 · 0 评论 -
1-3 递增的整数序列链表的插入 (20分) pta
1-3 递增的整数序列链表的插入 (20分)本题要求实现一个函数,在递增的整数序列链表(带头结点)中插入一个新整数,并保持该序列的有序性。函数接口定义:List Insert( List L, ElementType X );其中List结构定义如下:typedef struct Node PtrToNode;struct Node {ElementType Data; / 存储结点数据 /PtrToNode Next; / 指向下一个结点的指针 /};typedef PtrToNo原创 2020-10-20 22:17:26 · 433 阅读 · 0 评论 -
1-8 数组循环左移 (20分)
1-8 数组循环左移 (20分)本题要求实现一个对数组进行循环左移的简单函数:一个数组a中存有n(>0)个整数,在不允许使用另外数组的前提下,将每个整数循环向左移m(≥0)个位置,即将a中的数据由(a0 a1 ⋯an−1 )变换为(am ⋯an−1 a0 a1 ⋯am−1 )(最前面的m个数循环移至最后面的m个位置)。如果还需要考虑程序移动数据的次数尽量少,要如何设计移动的方法?输入格式:输入第1行给出正整数n(≤1原创 2020-10-21 10:52:02 · 255 阅读 · 0 评论 -
1-7 两个有序链表序列的交集 (20分)
1-7 两个有序链表序列的交集 (20分)已知两个非降序链表序列S1与S2,设计函数构造出S1与S2的交集新链表S3。输入格式:输入分两行,分别在每行给出由若干个正整数构成的非降序序列,用−1表示序列的结尾(−1不属于这个序列)。数字用空格间隔。输出格式:在一行中输出两个输入序列的交集序列,数字间用空格分开,结尾不能有多余空格;若新链表为空,输出NULL。输入样例:1 2 5 -12 4 5 8 10 -1输出样例:2 5#include<bits/stdc++.h>#i原创 2020-10-21 11:47:04 · 886 阅读 · 0 评论 -
1-6 求链式线性表的倒数第K项(不同的思路 3种方法)
1-6 求链式线性表的倒数第K项 (20分)给定一系列正整数,请设计一个尽可能高效的算法,查找倒数第K个位置上的数字。输入格式:输入首先给出一个正整数K,随后是若干非负整数,最后以一个负整数表示结尾(该负数不算在序列内,不要处理)。输出格式:输出倒数第K个位置上的数据。如果这个位置不存在,输出错误信息NULL。输入样例:4 1 2 3 4 5 6 7 8 9 0 -1输出样例:7#include<stdio.h> #include<stdlib.h>typed原创 2020-10-21 11:48:20 · 2978 阅读 · 2 评论 -
1-10 链表去重 (20分)
1-10 链表去重 (20分)给定一个带整数键值的链表 L,你需要把其中绝对值重复的键值结点删掉。即对每个键值 K,只有第一个绝对值等于 K 的结点被保留。同时,所有被删除的结点须被保存在另一个链表上。例如给定 L 为 21→-15→-15→-7→15,你需要输出去重后的链表 21→-15→-7,还有被删除的链表 -15→15。输入格式:输入在第一行给出 L 的第一个结点的地址和一个正整数 N(≤105 ,为结点总数)。一个结点的地址是非负的 5 位整数,空地址 NULL 用 -1 来表示。原创 2020-10-21 21:42:59 · 317 阅读 · 0 评论 -
7-2 两个有序链表序列的合并
已知两个非降序链表序列S1与S2,设计函数构造出S1与S2合并后的新的非降序链表S3。输入格式:输入分两行,分别在每行给出由若干个正整数构成的非降序序列,用−1表示序列的结尾(−1不属于这个序列)。数字用空格间隔。输出格式:在一行中输出合并后新的非降序链表,数字间用空格分开,结尾不能有多余空格;若新链表为空,输出NULL。输入样例:1 3 5 -12 4 6 8 10 -1输出样例:1 2 3 4 5 6 8 10 vector的作用和一维数组相似,所以不能确定数组的大小,或者因为数组大原创 2020-11-17 10:38:15 · 537 阅读 · 0 评论