PTA-学校-数据结构(统计度为1的结点数、二叉树求结点数、求二叉树的高度)
1-1 统计度为1的结点数 分数 3 作者 黄龙军 单位 绍兴文理学院 要求实现函数,统计并返回二叉树中的度为1的结点数。二叉树采用二叉链表存储,结点结构如下: struct BiTNode { // 结点结构 char data; // 结点数据域 BiTNode *lchild, *rchild; // 左、右孩子指针}; 函数接口定义: int CountSingle(BiTNode *T); 其中参数 T是指向二叉树根结点的指针。 裁判测试程序样例: #include<iostream>#include<string>using namespace std;struct BiTNode { char data; BiTNode *lchild, *rchild;};int CountSingle(BiTNode *T); // 统计并返回度为1的结点数BiTNode *CreateBiTree(string ...
PTA-学校-数据结构(顺序队列的3个操作、链式队列的3个操作)
2-11 顺序队列的3个操作 分数 6 作者 陈越 单位 浙江大学 请编写程序,将 n+1 个整数顺序压入容量为 n 的队列,随后执行 n+1 次取队首并出队的操作。 输入格式: 输入首先在第一行给出正整数 n(≤104);随后一行给出 n+1 个 int 范围内的整数,数字间以空格分隔。 输出格式: 将输入的n+1 个整数顺序压入容量为 n 的队列,随后执行 n+1 次取队首并出队的操作,输出取出的元素的值,每行一个。 注意:当队列已满时,入队操作应该不执行,并在一行中输出错误信息 错误:队列已满。;当队列为空时,取队首和出队操作应该不执行,并在一行中输出错误信息 错误:队列为空。。空队列取队首应返回 -1。 输入样例: 51 2 3 4 5 6 输出样例: 错误:队列已满。12345错误:队列为空。-1错误:队列为空。 解析(直接用queue库) #include <iostream>#include <queue>using namespace std;int main() { int n; cin >> n; int i = ...
PTA-学校-数据结构(出栈序列的合法性、包装机、用两个栈实现队列、算式拆解)
2-6 出栈序列的合法性 分数 6 作者 陈越 单位 浙江大学 给定一个最大容量为 m 的堆栈,将 n 个数字按 1, 2, 3, …, n 的顺序入栈,允许按任何顺序出栈,则哪些数字序列是不可能得到的?例如给定 m=5、n=7,则我们有可能得到{ 1, 2, 3, 4, 5, 6, 7 },但不可能得到{ 3, 2, 1, 7, 5, 6, 4 }。 输入格式: 输入第一行给出 3 个不超过 1000 的正整数:m(堆栈最大容量)、n(入栈元素个数)、k(待检查的出栈序列个数)。最后 k 行,每行给出 n 个数字的出栈序列。所有同行数字以空格间隔。 输出格式: 对每一行出栈序列,如果其的确是有可能得到的合法序列,就在一行中输出YES,否则输出NO。 输入样例: 5 7 51 2 3 4 5 6 73 2 1 7 5 6 47 6 5 4 3 2 15 6 4 3 7 2 11 7 6 5 4 3 2 输出样例: YESNONOYESNO 解析 #include <iostream>#include <stack>using namespace std;i...
PTA-学校-数据结构(栈操作的合法性、逆波兰表达式求值)
2-4 栈操作的合法性 分数 6 作者 DS课程组 单位 浙江大学 假设以S和X分别表示入栈和出栈操作。如果根据一个仅由S和X构成的序列,对一个空堆栈进行操作,相应操作均可行(如没有出现删除时栈空)且最后状态也是栈空,则称该序列是合法的堆栈操作序列。请编写程序,输入S和X序列,判断该序列是否合法。 输入格式: 输入第一行给出两个正整数 n 和 m,其中 n 是待测序列的个数,m(≤50)是堆栈的最大容量。随后 n 行,每行中给出一个仅由S和X构成的序列。序列保证不为空,且长度不超过100。 输出格式: 对每个序列,在一行中输出YES如果该序列是合法的堆栈操作序列,或NO如果不是。 输入样例: 4 10SSSXXSXXSXSSSXXSXXSSSSSSSSSSSXSSXXXXXXXXXXXSSSXXSXXX 输出样例: YESNONONO 解析 #include <iostream>#include <string>using namespace std;int main() { int n, m; cin >> n >> m...
