C语言利用双向栈的操作实现两个栈共享一段空间并且分别存放奇偶数
题目均在sdibt acm oj上AC,参考《深入浅出数据结构和算法》教材,逐个复制即可运行,欢迎评论指正!
Description
两个栈共享一段存储空间,栈1自左向右增长,栈2自右向左增长,双向栈的存储结构如下:
# define MAXSIZE 10
typedef struct
{
ElemType data[MAXSIZE];
int top1,top2;
}DoubleStack;
编程实现输入n(1<=n <=20)个整数,若是偶数入栈1,否则入栈2。然后栈1中元素依次出栈输出,栈2中的元素依次出栈输出。
Input
第1行输入 n
第2行输入n个数,以空格分隔
Output
栈1中的元素出栈输出, 栈2中的元素出栈输出,以空格分隔
Sample Input
12
10 12 3 14 25 6 73 81 29 20 23 2
Sample Output
20 6 14 12 10 29 81 25 3
HINT:
对双向栈的操作,可以最大限度的利用栈的空间
预编译文件的声明和结构体的定义:
#include <stdio.