C语言利用双向栈的操作实现两个栈共享一段空间并且分别存放奇偶数

本文介绍了如何使用C语言实现两个栈共享一段存储空间,分别存放奇偶数。通过双向栈的数据结构,当输入n个整数时,偶数进入栈1,奇数进入栈2。然后依次输出栈1和栈2的内容。文章提供了详细的描述、输入输出示例、代码实现及操作提示。
摘要由CSDN通过智能技术生成

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.
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值