【二叉树】前序遍历+中序遍历->建树

描述输入一棵二叉树的先序和中序遍历序列,输出其后序遍历序列。输入输入文件为tree.in,共两行,第一行一个字符串,表示树的先序遍历,第二行一个字符串,表示树的中序遍历。树的结点一律用小写字母表示。输出输出文件为tree.out,仅一行,表示树的后序遍历序列。

样例输入

abdec
dbeac

样例输出

debca

继续阅读【二叉树】前序遍历+中序遍历->建树

【栈】括号匹配

描述假设表达式中只包含三种括号:圆括号、方括号和花括号,它们可相互嵌套,如([{}])或({[][()]})等均为正确的格式,而{[]})}或{[()]或([]}均为不正确的格式.

输入一串括号
如果输入的右括号多余,输出:Extra right brackets
如果输入的左括号多余, 输出:Extra left brackets
如果输入的括号不匹配,输出:Brackets not match
如果输入的括号匹配,输出:Brackets match输入{{{{)))输出Brackets not match样例输入

{([)]}

样例输出

Brackets not match

继续阅读【栈】括号匹配

【栈】波兰表达式计算

描述波兰表达式是一种把运算符前置的算术表达式,例如普通的表达式2 + 3的波兰表示法为+ 2 3。波兰表达式的优点是运算符之间不必有优先级关系,也不必用括号改变运算次序,例如(2 + 3) * 4的波兰表示法为* + 2 3 4。本题求解波兰表达式的值,其中运算符包括+ – * /四个。输入输入为一行,其中运算符和运算数之间都用空格分隔,运算数是浮点数。输出输出为一行,表达式的值。
可直接用printf(“%f\n”, v)输出表达式的值v。

样例输入

* + 11.0 12.0 + 24.0 35.0

样例输出

1357.000000

提示可使用atof(str)把字符串转换为一个double类型的浮点数。atof定义在math.h中。
此题可使用函数递归调用的方法求解。

 

继续阅读【栈】波兰表达式计算

【递归】加数字

要求找出具有下列性质的数的个数(包含输入的自然数n):

先输入一个自然数n(n<=500),然后对此自然数按照如下方法进行处理:

1.不作任何处理;

2.在它的左边加上一个自然数,但该自然数不能超过原数首位数字的一半;

3. 加上数后,继续按此规则进行处理,直到不能再加自然数为止.

输入一个整数n输出一个整数,即满足条件的数的个数样例输入 继续阅读【递归】加数字

【单链表】非递减有序集合合并

描述

巳知线性表LA和线性表LB中的数据元素按值非递减有序排列,现要求将LA和LB归并为一个新的线性表LC,且LC中的元素仍按值非递减有序排列。

输入三行,第一行A,B集合的个数n,m
第二行:集合A的数据;
第三行:集合B的数据。输出二行,第一行,集合C的个数k
第二行:集合C的数据。样例输入

11   12
2 4 6 7 8 9 12 34 56 78 89
3 5 7 9 12 34 56 98 234 456 789 1234

样例输出

18
2 3 4 5 6 7 8 9 12 34 56 78 89 98 234 456 789 1234

提示n,m<255

继续阅读【单链表】非递减有序集合合并

【单链表】集合合并

描述

已知集合A与集合B,且第个集合内数据是唯一的。求A,B集合合并成新的集合C,要求C集合内的数据也是唯一的。并指出C集合的个数。

输入三行,第一行分别为集合A,B的个数
第二行为A集合的数据
第三行为B集合的数据输出两行
第一行集合C的个数
第二行为C集合的数据样例输入

4 5
12 34 56 78
34 67 89 34 76

样例输出

7
12 34 56 78 67 89 76

 

继续阅读【单链表】集合合并