1-3 递增的整数序列链表的插入分数 4
作者 DS课程组
单位 浙江大学
本题要求实现一个函数,在递增的整数序列链表(带头结点)中插入一个新整数,并保持该序列的有序性。
函数接口定义:1List Insert( List L, ElementType X );
其中List结构定义如下:
123456typedef struct Node *PtrToNode;struct Node { ElementType Data; /* 存储结点数据 */ PtrToNode Next; /* 指向下一个结点的指针 */};typedef PtrToNode List; /* 定义单链表类型 */
L是给定的带头结点的单链表,其结点存储的数据是递增有序的;函数Insert要将X插入L,并保持该序列的有序性,返回插入后的链表头指针。
裁判测试程序样例:12345678910111213141516171819202122232425262728#include <stdio.h>#include <stdlib.h>typedef ...
1-2 单链表逆转分数 4
作者 陈越
单位 浙江大学
本题要求实现一个函数,将给定的单链表逆转。
函数接口定义:1List Reverse( List L );
其中List结构定义如下:
123456typedef struct Node *PtrToNode;struct Node { ElementType Data; /* 存储结点数据 */ PtrToNode Next; /* 指向下一个结点的指针 */};typedef PtrToNode List; /* 定义单链表类型 */
L是给定单链表,函数Reverse要返回被逆转后的链表。
裁判测试程序样例:123456789101112131415161718192021222324252627#include <stdio.h>#include <stdlib.h>typedef int ElementType;typedef struct Node *PtrToNode;struct Node { ElementType Data; ...
1-1 求链式表的表长分数 3
作者 陈越
单位 浙江大学
本题要求实现一个函数,求链式表的表长。
函数接口定义:1int Length( List L );
其中List结构定义如下:
123456typedef struct LNode *PtrToLNode;struct LNode { ElementType Data; PtrToLNode Next;};typedef PtrToLNode List;
L是给定单链表,函数Length要返回链式表的长度。
裁判测试程序样例:1234567891011121314151617181920212223#include <stdio.h>#include <stdlib.h>typedef int ElementType;typedef struct LNode *PtrToLNode;struct LNode { ElementType Data; PtrToLNode Next;};typedef PtrToLNode List;Lis ...
1-2 数组元素的区间删除分数 5
作者 DS课程组
单位 浙江大学
给定一个顺序存储的线性表,请设计一个函数删除所有值大于min而且小于max的元素。删除后表中剩余元素保持顺序存储,并且相对位置不能改变。
函数接口定义:1int Delete( int A[], int L, int minA, int maxA );
其中A是整型数组,存储原始线性表的元素;L是表长,即A中元素的个数;minA和maxA分别为待删除元素的值域的下、上界。函数Delete应将A中所有值大于minA而且小于maxA的元素删除,同时保证表中剩余元素保持顺序存储,并且相对位置不变,最后返回删除后的表长。
裁判测试程序样例:123456789101112131415161718192021#include <stdio.h>#define MAXN 20int Delete( int A[], int L, int minA, int maxA );int main(){ int A[MAXN], L, minA, maxA, i; scanf("%d" ...
1-1 顺序表操作集分数 5
作者 陈越
单位 浙江大学
本题要求实现顺序表的操作集。
函数接口定义:1234List MakeEmpty(); Position Find( List L, ElementType X );bool Insert( List L, ElementType X, Position P );bool Delete( List L, Position P );
其中List结构定义如下:
123456typedef int Position;typedef struct LNode *List;struct LNode { ElementType Data[MAXSIZE]; Position Last; /* 保存线性表中最后一个元素的位置 */};
各个操作函数的定义为:
List MakeEmpty():创建并返回一个空的线性表;
Position Find( List L, ElementType X ):返回线性表中X的位置。若找不到则返回ERROR;
bool Insert( List L, ElementTy ...
2-13 约瑟夫环分数 9
作者 李廷元
单位 中国民用航空飞行学院
N个人围成一圈顺序编号,从1号开始按1、2、3……顺序报数,报p者退出圈外,其余的人再从1、2、3开始报数,报p的人再退出圈外,以此类推。请按退出顺序输出每个退出人的原序号。
输入格式:输入只有一行,包括一个整数N(1<=N<=3000)及一个整数p(1<=p<=5000)。
输出格式:按退出顺序输出每个退出人的原序号,数据间以一个空格分隔,但行尾无空格。
输入样例:在这里给出一组输入。例如:
17 3
输出样例:13 6 2 7 5 1 4
我卡住的位置123456789101112131415161718192021222324252627282930313233343536#include <iostream>using namespace std;// 定义顺序表结构typedef struct { int *data; int length;} sqList;// 初始化顺序表void initList(sqList &L, i ...
2-12 线性表循环右移分数 8
作者 陈越
单位 浙江大学
给定顺序表 A=(a1,a2,⋯,a**n),请设计一个时间和空间上尽可能高效的算法将该线性表循环右移指定的 m 位。例如,(1,2,5,7,3,4,6,8) 循环右移 3 位(m=3) 后的结果是 (4,6,8,1,2,5,7,3)。
输入格式:第一行输入 n ( 1≤n≤105)、m(m≥0);第二行输入 n 个整数。所有数字在 int 型整数范围内,同行数字间以空格分隔。
输出格式:输出循环右移 m 位以后的整数序列。数字间以 1 个空格分隔,行首尾不得有多余空格。
输入样例:126 21 2 3 4 5 6
输出样例:15 6 1 2 3 4
答案1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859#include <iostream>using namespace std;// 定义顺序表结构typedef struct { ...
2-11 从顺序表 list 中删除第 i 个元素分数 8
作者 陈越
单位 浙江大学
请编写程序,将 n 个整数存入顺序表,对任一指定的第 i 个位置,将这个位置上的元素从顺序表中删除。注意:i 代表位序,从 1 开始,不是数组下标。
输入格式:输入首先在第一行给出正整数 n(≤104);随后一行给出 n 个 int 范围内的整数,数字间以空格分隔;最后一行给出删除位序 i,为 int 范围内的整数。
输出格式:如果删除的位置不合法,则不能删除,在一行中输出句子 错误:不存在这个元素。。无论是否删除成功,都在一行中顺序输出表中的元素,每个元素后面跟一个空格。
输入样例 1:12351 2 3 4 53
输出样例 1:11 2 4 5
输入样例 2:12354 3 6 8 00
输出样例 2:12错误:不存在这个元素。4 3 6 8 0
答案12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849#include <iostream>usin ...
2-10 在顺序表 list 的第 i 个位置上插入元素 x分数 8
作者 陈越
单位 浙江大学
请编写程序,将 n 个整数存入顺序表,对任一给定整数 x,将其插入顺序表中指定的第 i 个位置。注意:i 代表位序,从 1 开始,不是数组下标。
输入格式:输入首先在第一行给出正整数 n(≤104);随后一行给出 n 个 int 范围内的整数,数字间以空格分隔;最后一行给出插入位置 i 和待插入的元素 x,均为 int 范围内的整数。
输出格式:分以下几种情况输出:
如果顺序表中已经有 104 个元素了,则不能插入,在一行中输出句子 错误:表满不能插入。。
如果插入的位置不合法,则不能插入,在一行中输出句子 错误:插入位置不合法。。
无论是否插入成功,都在一行中顺序输出表中的元素,每个元素后面跟一个空格。
输入样例 1:12351 2 3 4 53 8
输出样例 1:11 2 8 3 4 5
输入样例 2:12354 3 6 8 00 1
输出样例 2:12错误:插入位置不合法。4 3 6 8 0
答案123456789101112131415161718192021222 ...
2-9 在顺序表 list 中查找元素 x分数 7
作者 陈越
单位 浙江大学
请编写程序,将 n 个整数存入顺序表,对任一给定整数 x,查找其在顺序表中的位置。
输入格式:输入首先在第一行给出正整数 n(≤104);随后一行给出 n 个 int 范围内的不重复的整数,数字间以空格分隔;最后一行给出待查找的元素 x,也是 int 范围内的整数。
输出格式:在一行中输出 x 在顺序表中的位置,即数组下标。如果没找到,则输出 -1。注意数组下标从 0 开始。
输入样例 1:12351 2 3 4 54
输出样例 1:13
输入样例 2:12354 3 6 8 01
输出样例 2:1-1
答案123456789101112131415161718192021222324252627282930313233343536373839#include <iostream>using namespace std;// 定义顺序表结构typedef struct { int *data; int length;} sqList;// 初始化顺序表vo ...


