队列逆置数据结构

#include<stdio.h>
#include<stdlib.h>
#define Datatype int
#define size 10000
typedef struct
{
    Datatype queue[size];
    int rear;
    int front;
    int count;
}Seqcqueue;
typedef struct
{
    int elem[size];
    int top;
}Stack;
//初始化 
void initstack(Stack *s)
{
    s->top=-1;
}

void initqueue(Seqcqueue *q)
{
    q->rear=0;
    q->front=0;
    q->count=0; 
}
//入队 
int inputstack(Stack *s,int x)
{
    if(s->top==size)
    return 0;
    else
    {
        s->top++;
        s->elem[s->top]=x;
    }
}

int queueappend(Seqcqueue *q,Datatype x)
{
    if(q->count>0&&q->rear==q->front)
    {
        return 0;
    }
    else
    {
        q->queue[q->rear]=x;
        q->rear=(q->rear+1)%size;
        q->count++;
        return 1;
    }
 } 
//出队
int outputstack(Stack *s,int *m)
{
    if(s->top==-1)   return 0; 
    *m=    s->elem[s->top];
    s->top--;
}
int Deletequeue(Seqcqueue *q,Datatype *m)
{
    if(q->front==q->rear) return 0;
        *m=q->queue[q->front];
    q->front=(q->front+1)%size;

    q->count--;
    return 1;
 }  
/*int Isempty(Seqcqueue q)
 {
     if(q.count==0)
     return 1;
     else return 0;
 }*/

int main()
{
    Stack s;
    initstack(&s);
    Seqcqueue q;
    initqueue(&q);
    int n,x;
    int m;
    scanf("%d",&n);
    int i,elem;
    for(i=1;i<=n;i++)
    {
        scanf("%d",&elem);
        queueappend(&q,elem);
    }
    for(i=1;i<=n;i++)
    {
        Deletequeue(&q,&m);
        inputstack(&s,m);
    }
    for(i=1;i<=n;i++)
    {
        outputstack(&s,&x);
        printf("%d ",x);
    }
}                                                                                                                            
 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值