编写程序选用顺序存储结构和链式存储结构实现抽象数据类型栈和队列,再利用栈和队列,输入若干个整数,将输入后的正整数和负整数分别保存起来,输入完成后,首先将以输入相反的次序输出所有保存的正整数,再以输入相同次序输出所有保存的负整数。
栈:先进后出
队列:先进先出
输入样例:
100 2 3 -2 -8 -6 -9 -10 50 2 -1
输出样例:
2 50 3 2 100
-2 -8 -6 -9 -10 -1
代码如下:
#include <stdio.h>
#include <stdlib.h>
//定义结构体
typedef struct node {
int data;
struct node *next;
}Node;
typedef struct Stack {
Node *top;
int count;
}Stack;
typedef struct Queue {
Node *phead;
Node *ptail;
int count;
}Queue;
//创建栈结构体
Stack *_createStack();
//创建队列结构体
Queue *_createQueue();
//创建节点结构体
Node *_createNode();
//出栈
int _pop(Stack **s);
//进栈
void _push(Stack **s,int a);
//判空栈
int _emptyStack(Stack *S);
//获取非空栈顶元素
int _getTop(Stack *S);
//销毁栈
void _destroyStack(Stack *S);
//出队列
int _out(Queue **s);
//进队列
void _in(Queue