#include <stdio.h>
#include <stdlib.h>
#define init_size 1000
typedef struct {
int head,tail,size,__size,*seq;
}Queue;
typedef Queue* Q_P;
void init(Q_P q){
q->head=q->tail=0;q->__size=init_size;q->size=0;
q->seq=(int*)malloc(init_size*sizeof(Queue));
}
void push(Q_P q,int ele){
if(q->tail+1>=q->__size){
q->seq=(int*)realloc(q->seq,sizeof(int)*(q->__size*=2));
}
q->seq[q->tail++]=ele;
q->size++;
//debug
// printf("PUSH %d SIZE:%d\n",q->seq[q->tail-1],q->size);
}
int empty(Q_P q){
if(q->head==q->tail) return 1;
return 0;
}
void pop(Q_P q){
if(!empty(q)) q->head++,q->size--;
// printf("POP SIZE:%d\n",q->size);
}
int front(Q_P q){
if(!empty(q)) return q->seq[q->head];
}
void print(Q_P q){
printf("%d",front(q));pop(q);
while(q->size!=0) {printf(" %d",front(q));pop(q);}
printf("\n");
}
void test(){
int i;
Q_P q=(Q_P)malloc(sizeof(Queue));
init(q);
for(i=0;i<10;++i) {push(q,i);}
print(q);
}
void solve(){
int n,i,T;scanf("%d",&T);
while(T--){
scanf("%d",&n);
Q_P a=(Q_P)malloc(sizeof(Queue)),b=(Q_P)malloc(sizeof(Queue));//或者Queue *a,*b;
init(a);init(b);
for(i=1;i<=n;++i){
push(a,i);push(b,i);
}
// print(a);print(b);
//print the Queue ,but at the same time the action does clear the queue
if(a->size!=0&&a->size<=3) print(a);
int cnt=0;
while(a->size>3||b->size>3){
int k;
for(k=2;k<=3;++k){
cnt++;
if(cnt&1){
while(b->size!=0) pop(b);
int cc=0;while(a->size!=0) {if(++cc%k!=0) push(b,front(a));pop(a);}
}
else{
while(a->size!=0) pop(a);
int cc=0;while(b->size!=0) {if(++cc%k!=0) push(a,front(b));pop(b);}
}
if(a->size!=0&&a->size<=3) {print(a);break;}
if(b->size!=0&&b->size<=3) {print(b);break;}
}
}
}
} int main(){
// test();
solve();
return 0;
}

手工数据结构系列-C语言模拟队列 hdu1276的更多相关文章

  1. 手工数据结构系列-C语言模拟队列和栈 hdu1702

    #include <stdio.h> #include <stdlib.h> //================= DATA STRUCTURE ============== ...

  2. 手工数据结构系列-C语言模拟栈 hdu1022

    这个题我一开始是这么想的.. 爆搜所有可能的出栈序列 然后对输入进行匹配 这样我感觉太慢 然后我们可以想到直接通过入栈序列对出栈序列进行匹配 但是我犯了一个错误..那就是出栈序列一定到入栈序列里找.. ...

  3. 【JavaScript数据结构系列】04-优先队列PriorityQueue

    [JavaScript数据结构系列]04-优先队列PriorityQueue 码路工人 CoderMonkey 转载请注明作者与出处 ## 1. 认识优先级队列 经典的案例场景: 登机时经济舱的普通队 ...

  4. [数据结构] 用C语言模拟一个简单的队列程序

    #include<stdio.h> #include <stdlib.h> #include<string.h> #include<math.h> // ...

  5. 【C#数据结构系列】栈和队列

    一:栈 栈和队列也是线性结构,线性表.栈和队列这三种数据结构的数据元素以及数据元素间的逻辑关系完全相同,差别是线性表的操作不受限制,而栈和队列的操作受到限制.栈的操作只能在表的一端进行,队列的插入操作 ...

  6. Javascript与数据结构系列(二)——队列的实现

    队列实现 使用数组来实现队列看起来顺理成章.JavaScript 中的数组具有其他编程语言中没有的优点, 数组的 push() 方法可以在数组末尾加入元素,shift() 方法则可删除数组的第一个元素 ...

  7. 【数据结构】C++语言环形队列的实现

    队列--先进先出 队列的一个缺点--出队后的内存空间浪费了,不能二次利用 环形队列--解决以上缺点的队列,用过的内存空间可以重复利用 github: https://github.com/HITFis ...

  8. 数据结构之C语言模拟整数数组实现

    #include <stdio.h> #include <malloc.h> #include <stdlib.h> typedef struct Arr { in ...

  9. 数据结构算法C语言实现(十二)--- 3.4循环队列&队列的顺序表示和实现

    一.简述 空队列的处理方法:1.另设一个标志位以区别队列是空还是满:2.少用一个元素空间,约定以队列头指针在队尾指针下一位置上作为队列呈满的状态的标志. 二.头文件 //3_4_part1.h /** ...

随机推荐

  1. [Usaco2005 Dec]Scales 天平

    题目描述 约翰有一架用来称牛的体重的天平.与之配套的是N(1≤N≤1000)个已知质量的砝码(所有砝码质量的数值都在31位二进制内).每次称牛时,他都把某头奶牛安置在天平的某一边,然后往天平另一边加砝 ...

  2. Mybatis入门Demo(单表的增删改查)

    1.Mybatis 什么是Mybatis: mybatis是一个持久层框架,用java编写的 它封装了jdbc操作的很多细节,使开发者只需要关注sql语句本身,而无需关注注册驱动.创建连接等繁杂过程 ...

  3. CMOS 摄像头的Skipping 和 Binning 模式

    在通常的摄像头中,不同的resolution对应不同的帧率.想要提高帧率就要考虑是否需要缩小视野(FOV).若不希望视野缩小,就需要减少resolution. 常用的减少resolution的两种方式 ...

  4. jQuery 多选与清除

    <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...

  5. Netty之ChannelHandler

    一.概述 handler是控制socket io的各个生命周期的业务实现,netty实现了很多种协议所以有很多handler类,这儿主要关注Handler的设计.作用以及使用方法. 二.Channel ...

  6. CF460C Present

    写在前面 由于菜,写树状数组写挂了. 于是想出了一种不像线段树或树状数组+二分答案那样显然,但是依旧不难想,复杂度比较优秀,代码难度低的做法. 算法思路 外部二分答案,不多解释,稍证明一下单调性: 若 ...

  7. CF1209A

    所谓染色,并使同颜色数都能被当前颜色中最小的数整除 也就是说,把能被某个数整除的所有数放在一起为一组,问共有几组 开始我想写个并查集但是很懒,看数据范围小的可怜,那我们写个暴力看看 因为每组的共因数都 ...

  8. 微信小程序--使用云开发完成支付闭环

    微信小程序--使用云开发完成支付闭环 1.流程介绍 2. 代码实现和逻辑思想描述 云函数统一下单 对应云函数 unipay [CloudPay.unifiedOrder] 函数思路 : 调用云函数封装 ...

  9. JavaScript——事件

    事件:是由访问Web页面的用户引起一系列操作. 事件的作用:用于浏览器和用户的交互 以下代码为相关试验代码: HTML事件: <script type="text/javascript ...

  10. Java 8新特性(Lambda,Stream API)

    由于最近总监要求学习Java 8的一些知识,就去网上找了 一套教程来学习学习,将学习结果做一个小的总结记录,方便以后使用: 1.Java 8的优点 2.Lambda表达式优点 2.1Lambda实例 ...