1-1 括号匹配分数 4
作者 黄龙军
单位 绍兴文理学院
要求实现函数,借助如下自定义栈SqStack判断一个中、小括符[、]、(、)组成的字符串中的括弧是否匹配,是则返回true,否则返回false。例如,[[()]]、([[()]])、(()[[]])是匹配的,而(((、()]、 ([(]))是不匹配的。
12345678910typedef char ElemType; // 为char取别名ElemTypestruct SqStack{ ElemType *base; // 顺序栈的首地址,动态数组的首地址 int top; // 栈顶指针,栈非空时,为栈顶元素的下标(从0开始) void Init( ); // 初始化栈 ElemType GetTop(); // 取栈顶元素 void Push(Elem ...
2-9 约瑟夫环分数 8
作者 李廷元
单位 中国民用航空飞行学院
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
第二次见这个题目
第一次写是在顺序表里面,写了一次超时了,学习了豆包的方法:直接用数组,剩余人数直接定义一个remaining的变量,学习了之后,看懂了直接上传了PTA(顺序表)2-13 约瑟夫环 | zhangzhang-blog
这一次是自己手敲的,用到的是定义一个顺序表结构,用的L.length表示剩余人数
答案1234567891011121314151617181920212223242526272829303132333435 ...
数据结构宏定义在本笔记中用到的宏定义,头文件为define.h
12345678910#ifndef __DEFINE_H#define __DEFINE_H#define TRUE 1#define FALSE 0#define OK 1#define ERROR 0#define INFEASIBLE -1#define OVERFLOW -2typedef int Status;#endif
第一章:线性表
线性表的基本操作
InitList(&L):初始化表。构造一个空的线性表L,分配内存空间。
DestroyList(&L):销毁操作。销毁线性表,并释放线性表L所占用的内存空间。
(提示:从无到有、从有到无)
ListInsert(&L,i,e):插入操作。在表L中的第i个位置上插入指定元素e。
ListDelete(&L,i,&e):删除操作。删除表L中第i个位置的元素,并用e返回删除元素的值。
(提示:增、删)
LocateElem(L,e):按值查找操作。在表L中查找具有给定关键字值的元素。
GetElem(L,i) ...
2-10 在单链表 list 的第 i 个位置上插入元素 x分数 3
作者 陈越
单位 浙江大学
请编写程序,将 n 个整数插入初始为空的单链表,第 i 个整数插入在第 i 个位置上。注意:i 代表位序,从 1 开始。插入结束后,输出链表长度,并顺序输出链表中的每个结点的数值。最后,尝试将最后一个整数插入到链表的第 0 个、第 n+2 个位置上,以测试错误信息的输出。
输入格式:输入首先在第一行给出正整数 n(≤20);随后一行给出 n 个 int 范围内的整数,数字间以空格分隔。
输出格式:按照题面描述的要求,首先在第 1 行输出链表信息,格式为:
1表长: x1 x2 ... xn
注意数字间有 1 个空格分隔,行首尾无多余空格。在第 2、3 行分别输出将最后一个整数插入到链表的第 0 个、第 n+2 个位置上的信息 —— 当插入位置不合法时,应输出 错误:插入位置不合法。。
输入样例:1251 2 3 4 5
输出样例:1235: 1 2 3 4 5错误:插入位置不合法。错误:插入位置不合法。
依旧是之前写过的题目,我再敲一遍
答案1234567891011121314 ...
2-8 单链表逆置分数 3
作者 段华琼
单位 成都锦城学院
将单链表倒置,要求只利用原表的存储空间。
原单链表如下所示:
倒置后的单链表应为:
输入格式:第一行输入n的值,表示单链表的元素个数。第二行输入n个整数值,作为单链表的各元素值。
输出格式:输出倒置后的单链表的各元素值,各元素值之间用空格分隔。
输入样例1:42 4 6 8
输出样例1:8 6 4 2
输入样例2:71 3 5 7 9 11 13
输出样例2:13 11 9 7 5 3 1
12342 4 6 88 6 4 2
第二次碰到这个单链表的逆置,但是是第一次自己手敲出来,第一次完全不知道咋做,用到了三指针法:PTA(链表)1-2 单链表逆转 | zhangzhang-blog
答案12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667#include<iostream>using namespa ...
2-7 h0321. 反转链表分数 3
作者 黄正鹏
单位 贵州工程应用技术学院
给定一个常数 K 和一个单链表 L,请你在单链表上每 K 个元素做一次反转,并输出反转完成后的链表。
如果链表最后一部分不足 K 个元素,则最后一部分不翻转。
例如,假设 L 为 1→2→3→4→5→6,如果 K=3,则你应该输出 3→2→1→6→5→4;如果 K=4,则你应该输出 4→3→2→1→5→6 。
补充:本题中可能包含不在链表中的节点,这些节点无需考虑。
输入格式:第一行包含头节点地址,总节点数量 N 以及常数 K。1≤N≤10^5 ,1≤K≤N
节点地址用一个 5 位非负整数表示(可能有前导 0),NULL 用 −1 表示。
接下来 N 行,每行描述一个节点的信息,格式如下:
1Address Data Next
其中 Address 是节点地址,Data 是一个整数,Next 是下一个节点的地址。
输出格式:将重新排好序的链表,从头节点点开始,依次输出每个节点的信息,格式与输入相同。
输入样例:123456700100 6 400000 4 9999900100 1 123096823 ...
2-6 两个有序链表合并(新表不含重复元素)分数 4
作者 陈晓梅
单位 广东外语外贸大学
已知两个非降序链表序列S1与S2,设计函数构造出S1与S2合并后的新的非降序链表S3。要求S3中没有重复元素。
输入格式:输入分两行,分别在每行给出由若干个正整数构成的非降序序列,用−1表示序列的结尾(−1不属于这个序列)。数字用空格间隔。
输出格式:在一行中输出合并后新的非降序链表,要求链表中没有重复元素。数字间用空格分开,结尾不能有多余空格;若新链表为空,输出NULL。
输入样例:在这里给出一组输入。例如:
121 3 3 5 8 -12 3 4 6 8 10 -1
输出样例:在这里给出相应的输出。例如:
11 2 3 4 5 6 8 10
又写了一题归并,但这次是不能有重复元素,之前链表的归并有
PTA(链表)1-6 两个有序链表序列的合并(C) | zhangzhang-blog
PTA(链表)2-3 两个有序链表序列的合并(C++) | zhangzhang-blog
不能有重复元素:我使用的是高效的查找表——布尔数组
我的正确答案123456789101112 ...
2-5 链表去重分数 5
作者 陈越
单位 浙江大学
给定一个带整数键值的链表 L,你需要把其中绝对值重复的键值结点删掉。即对每个键值 K,只有第一个绝对值等于 K 的结点被保留。同时,所有被删除的结点须被保存在另一个链表上。例如给定 L 为 21→-15→-15→-7→15,你需要输出去重后的链表 21→-15→-7,还有被删除的链表 -15→15。
输入格式:输入在第一行给出 L 的第一个结点的地址和一个正整数 N(≤105,为结点总数)。一个结点的地址是非负的 5 位整数,空地址 NULL 用 -1 来表示。
随后 N 行,每行按以下格式描述一个结点:
1地址 键值 下一个结点
其中地址是该结点的地址,键值是绝对值不超过104的整数,下一个结点是下个结点的地址。
输出格式:首先输出去重后的链表,然后输出被删除的链表。每个结点占一行,按输入的格式输出。
输入样例:12345600100 599999 -7 8765423854 -15 0000087654 15 -100000 -15 9999900100 21 23854
输出样例:1234500100 21 2385423 ...
2-4 两个有序链表序列的交集分数 6
作者 DS课程组
单位 浙江大学
已知两个非降序链表序列S1与S2,设计函数构造出S1与S2的交集新链表S3。
输入格式:输入分两行,分别在每行给出由若干个正整数构成的非降序序列,用−1表示序列的结尾(−1不属于这个序列)。数字用空格间隔。
输出格式:在一行中输出两个输入序列的交集序列,数字间用空格分开,结尾不能有多余空格;若新链表为空,输出NULL。
输入样例:121 2 5 -12 4 5 8 10 -1
输出样例:12 5
此题我是按照PTA(顺序表)2-5 集合减法 | zhangzhang-blog做的,用的布尔数组 瞬间判断 元素 num 是否在序列中,咋就是有个答案不对
我的部分正确12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879#include <iostream> ...
2-3 两个有序链表序列的合并分数 4
作者 DS课程组
单位 浙江大学
已知两个非降序链表序列S1与S2,设计函数构造出S1与S2合并后的新的非降序链表S3。
输入格式:输入分两行,分别在每行给出由若干个正整数构成的非降序序列,用−1表示序列的结尾(−1不属于这个序列)。数字用空格间隔。
输出格式:在一行中输出合并后新的非降序链表,数字间用空格分开,结尾不能有多余空格;若新链表为空,输出NULL。
输入样例:121 3 5 -12 4 6 8 10 -1
输出样例:11 2 3 4 5 6 8 10
依旧是第n遍写这个题(又敲了一遍)
答案123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899#include <iostream>using na ...


