两个栈实现一个队列
来源:互联网 发布:windows 远程桌面 打开 编辑:程序博客网 时间:2024/04/30 17:32
#include <stdio.h> #include <string.h>#include <stdlib.h>#include "stack.h"/*思路:入队的放stack1,出队从stack2出,如果stack2为空,则先将stack1的内容依次压入stack2中*//*出队,返回出队的值的指针!*/int* dequeue(t_stack *s1, t_stack *s2){int *p_value;if(!s1 || !s2)return NULL;if(s2->top == 0){/*stack2为空,先将stack1中内容弹出并压入stack2中*/while(s1->top){p_value = (int *)(s1->pop(s1));s2->push(s2, (void *)p_value, sizeof(int));}}p_value = (int *)(s2->pop(s2));return p_value;}/*入队,成功返回0, 失败返回-1*/int enqueue(t_stack *s1, t_stack *s2, int value){if(!s1 || !s2)return -1;return s1->push(s1, (void *)&value, sizeof(int));}int main(int argc, char *argv[]){t_stack *s1, *s2;s1 = init_stack();if(!s1)return -1;s2 = init_stack();if(!s2)return -1;printf("空队列出队测试: %s\n", NULL == dequeue(s1, s2) ? "OK" : "NOK");printf("入队测试,入队值1: %s\n", 0 == enqueue(s1, s2, 1) ? "OK" : "NOK");printf("入队测试,入队值2: %s\n", 0 == enqueue(s1, s2, 2) ? "OK" : "NOK");printf("入队测试,入队值3: %s\n", 0 == enqueue(s1, s2, 3) ? "OK" : "NOK");int *value;value = dequeue(s1, s2);printf("出队测试,期望值1, 实际值%d: %s\n", *value, 1==*value ? "OK" : "NOK");value = dequeue(s1, s2);printf("出队测试,期望值2, 实际值%d: %s\n", *value, 2==*value ? "OK" : "NOK");printf("入队测试,入队值4: %s\n", 0 == enqueue(s1, s2, 4) ? "OK" : "NOK");value = dequeue(s1, s2);printf("出队测试,期望值3, 实际值%d: %s\n", *value, 3==*value ? "OK" : "NOK");value = dequeue(s1, s2);printf("出队测试,期望值4, 实际值%d: %s\n", *value, 4==*value ? "OK" : "NOK");s1->destory(&s1);s2->destory(&s2);return 0;}
队列的实现在上一篇文章
0 0
- 两个队列实现一个栈&两个栈实现一个队列
- 两个栈实现一个队列-----两个队列实现一个栈
- 两个栈实现一个队列&&两个队列实现一个栈
- 两个栈实现一个队列 && 两个队列实现一个栈
- 两个栈实现一个队列,两个队列实现一个栈
- 两个栈实现一个队列/两个队列实现一个栈
- 两个栈实现一个队列&两个队列实现一个栈
- 两个队列实现一个栈&两个栈实现一个队列
- 两个队列实现一个栈 / 两个栈实现一个队列
- 两个栈实现一个队列,两个队列实现一个栈
- 两个栈实现一个队列&两个队列实现一个栈
- 两个栈实现一个队列&&两个队列实现一个栈
- 两个栈实现一个队列&两个队列实现一个栈
- 两个栈实现一个队列/两个队列实现一个栈
- 两个栈实现一个队列
- 两个栈实现一个队列
- 两个栈实现一个队列
- 两个栈实现一个队列
- 死锁避免算法-银行家算法
- java/jsp-向mysql写数据时出现了中文乱码
- SQL多表连接查询以及mysql数据库、sqlserver数据库常见不同点
- 螺旋矩阵(C语言实现)- 2016.01.04
- 请求的链式处理——职责链模式
- 两个栈实现一个队列
- IOS crash atos
- 关系型数据库管理系统简介
- 实例8:状态栏中显示代表登陆状态的图标(实现仿QQ登陆状态显示)
- NDK :Native method not found
- textview加链接
- 类目与扩展
- cocoa 之 KVO
- nginx安装