uva540 team queue

简介: uva540 team queue
#include <stdio.h>#include <stdlib.h>#include <string.h>#define MAXN 1000000#define LOCALtypedefstructnode{
structnode*next;
intdata;
} node;
typedefstructteam_node{
node*head;
node*rear;
structteam_node*next;
}team_node;
intteam[MAXN];
intnum_team;
voidinit(team_node**head);
voidenqueue(team_node**head, team_node**tail, intelement);
intsearch_team(int*team, intelement);
intdequeue(team_node**head);
intmain()
{
team_node*head=NULL;
team_node*tail=NULL;
intnum;
intno;
inti, j;
charbuf[10];
intelement;
inttests=0;
#ifndef LOCALfreopen("c://uva_in.txt", "r", stdin);
#endifwhile(scanf("%d", &num_team) &&num_team!=0)
    {
memset(team, -1, sizeof(team));
for(i=0; i<num_team; i++)
        {
scanf("%d", &num);
for(j=0; j<num; j++)
            {
scanf("%d", &no);
team[no] =i;
            }
        }
head= (team_node*)malloc(sizeof(structteam_node));
init(&head);
tail=NULL;
printf("Scenario #%d/n", ++tests);
while(scanf("%s", buf) &&strcmp(buf, "STOP") !=0)
        {
if(strcmp(buf,"ENQUEUE") ==0)
            {
scanf("%d", &element);
enqueue(&head, &tail, element);
            } 
else            {
element=dequeue(&head);
printf("%d/n", element);
            }
        }
printf("\n");
    }
return0;
}
voidinit(team_node**head)
{
    (*head)->next=NULL;
    (*head)->head= (*head)->rear=NULL;
}
voidenqueue(team_node**head, team_node**tail, intelement)
{
team_node*p;
node*q;
intteam1, team2;
intdata;
intflag;
if ((*head)->next==NULL)
    {
q= (node*)malloc(sizeof(structnode));
q->data=element;
q->next=NULL;
p= (team_node*)malloc(sizeof(structteam_node));
p->next=NULL;
p->head=p->rear= (node*)malloc(sizeof(structnode));
p->rear->next=q;
p->rear=q;
        (*head)->next=p;
*tail=p;
    }
else    {
flag=0p= (*head)->next;
while(p)
        {
data=p->head->next->data;
team1=search_team(team, data);
team2=search_team(team,  element);
if(team1==team2)
            {
q= (node*)malloc(sizeof(structnode));
q->data=element;
q->next=NULL;
p->rear->next=q;
p->rear=q;
flag=1;
break;
            }
elsep=p->next;
        }
if (!flag)
        {
q= (node*)malloc(sizeof(structnode));
q->data=element;
q->next=NULL;
p= (team_node*)malloc(sizeof(structteam_node));
p->next=NULL;
p->head=p->rear= (node*)malloc(sizeof(structnode));
p->rear->next=q;
p->rear=q;
            (*tail)->next=p;
*tail=p;
        }
    }
}
intsearch_team(int*team, intelement)
{
returnteam[element];
}
intdequeue(team_node**head)
{
team_node*p;
node*q;
intdata;
p= (*head)->next;
q=p->head->next;
data=q->data;
p->head->next=q->next;
free(q);
if(p->rear==q)
    {
p->rear=p->head;
        (*head)->next=p->next;
free(p->rear);
free(p);
    }
returndata;
}
目录
相关文章
|
JavaScript 开发者
Vue状态管理: 在Vuex中,什么是mutation?它们应该如何使用?
Vue状态管理: 在Vuex中,什么是mutation?它们应该如何使用?
616 4
|
存储 Oracle 关系型数据库
postgresql数据库|wal日志的开启以及如何管理
postgresql数据库|wal日志的开启以及如何管理
2423 0
|
Arthas Java 测试技术
记一次使用 Arthas 热更新线上代码
引用参考第二条 - Arthas提醒您:诊断千万条,规范第一条,热更不规范,同事两行泪
2860 0
记一次使用 Arthas 热更新线上代码
|
安全 算法 量子技术
【HTTPS】中间人攻击和证书的验证
【HTTPS】中间人攻击和证书的验证
346 1
|
存储 运维 关系型数据库
开源新发布|PolarDB-X v2.4.1 增强企业级运维能力
PolarDB-X 是阿里云推出的云原生分布式数据库,自2021年10月开源以来,持续迭代升级,至2024年4月发布的v2.4.1版本,重点增强了企业级运维能力,如无锁变更、物理扩缩容、数据TTL等,提供金融级高可用、透明分布式、HTAP一体化等特性。PolarDB-X 支持集中式和分布式一体化形态,兼容MySQL生态,适用于金融、通信、政务等行业。
2131 101
|
Java 网络架构 Kotlin
kotlin+springboot入门级别教程,教你如何用kotlin和springboot搭建http
本文是一个入门级教程,介绍了如何使用Kotlin和Spring Boot搭建HTTP服务,并强调了Kotlin的空安全性特性。
455 8
kotlin+springboot入门级别教程,教你如何用kotlin和springboot搭建http
|
监控 NoSQL 物联网
分享78个C++源码,总有一款适合您
分享78个C++源码,总有一款适合您
580 1
分享78个C++源码,总有一款适合您
|
SQL 算法
基于若依的ruoyi-nbcio流程管理系统修改代码生成的sql菜单id修改成递增id(谨慎修改,大并发分布式有弊端)
基于若依的ruoyi-nbcio流程管理系统修改代码生成的sql菜单id修改成递增id(谨慎修改,大并发分布式有弊端)
369 1
|
JSON Rust JavaScript
Vite 5.0 正式发布
Vite 5.0 正式发布
460 2
Appium文本定位方法实现find_element_by_text
Appium文本定位方法实现find_element_by_text
306 0

热门文章

最新文章

下一篇
开通oss服务