#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. Linux 安装分区设置分区大小

    一.Linux分区挂载点介绍 Linux分区挂载点介绍,推荐容量仅供参考不是绝对,跟各系统用途以及硬盘空间配额等因素实际调整: 分区类型 介绍 备注 /boot 启动分区 一般设置100M-200M, ...

  2. 开心!再也不用担心 IntelliJ IDEA 试用过期了

    背景 前段时间 Review 团队小伙伴代码,发现当他把鼠标挪到一个方法上时,就自动显示了该方法的所有注释信息,像下图这样,他和我用的 IDE 都是 IntelliJ IDEA. 而我还按古老的方式, ...

  3. Java并发包源码学习系列:阻塞队列实现之ArrayBlockingQueue源码解析

    目录 ArrayBlockingQueue概述 类图结构及重要字段 构造器 出队和入队操作 入队enqueue 出队dequeue 阻塞式操作 E take() 阻塞式获取 void put(E e) ...

  4. 网络编程 — Windows TCP服务端和客户端

    1. 服务端 #include <iostream> #include <signal.h> #include <forward_list> #include &l ...

  5. JavaScript常用API

    JavaScript常用API 节点属性 文档节点 事件监听.一出事件 获取元素方法

  6. Crunch

    Crunch 目录 1. 简介 2. 命令格式 3. options可选参数 3.1 -b number[type] 3.2 -c number 3.3 -d numbersymbol 3.4 -e ...

  7. PHP 框架之一Laravel

    Laravel: Laravel The phpFramework for Web Artisans and one of the best php framework in year 2014. L ...

  8. PHPday01

    1:概念 1.1.1 静态网站和动态网站 静态网站:不支持数据交互的网站,(html,htm) 动态网站:支持数据交互的网站 实现动态网站的技术: 实现技术 网站后缀 ASP技术 .asp PHP . ...

  9. Trove自动钓鱼脚本(国际服

    #WinActivateForce ; Script config. Do NOT change value here, might working inproperly! global Versio ...

  10. Go 和 Syscall

    曹春晖:谈一谈 Go 和 Syscall https://juejin.im/post/6844903845475139597