链队列——入队出队(C++)

#include<stdio.h>  

#include<stdlib.h>  



typedef struct Lnode  

{  

    int data;  

    struct Lnode *next;  

}LinkList;  

  

typedef struct  

{  

    LinkList *front;  

    LinkList *rear;  

}LinkQueue;  

  

int InQueue(LinkQueue *LQ)  

{  

    LinkList *p=(LinkList*)malloc(sizeof(LinkList));  

    if(p==NULL)  

    {  

        printf("初始化失败!\n");  

        return 0;  

    }  

    p->next=NULL;  

    LQ->front=LQ->rear=p;  

    return 1;  

}  

  

int EmptyQueue(LinkQueue *LQ)  

{  

    if(LQ->front==LQ->rear)  

    {  

        printf("队列空!\n");  

        return 1;  

    }  

    return 0;  

}  

  

int EnQueue(LinkQueue *LQ, int x)  

{  

    LinkList *s=(LinkList *)malloc(sizeof(LinkList));  

    if(s==NULL)  

    {  

        printf("分配空间失败!\n");  

        return 0;  

    }  

    s->data=x;  

    s->next=NULL;  

    LQ->rear->next=s;  

    LQ->rear=s;  

    return 1;  

}  

  

int GetFront(LinkQueue *LQ, int *x)  

{  

    if(EmptyQueue(LQ))  

    {  

        printf("队空!\n");  

        return 0;  

    }  

    *x=LQ->front->next->data;  

    return 1;  

}  

  

int OutQueue(LinkQueue *LQ, int *x)  

{  

    LinkList *p;  

    if(EmptyQueue(LQ))  

    {  

        printf("队空!\n");  

        return 0;  

    }  

    p=LQ->front->next;  

    *x=p->data;  

    LQ->front->next=p->next;  

    if(LQ->front->next==NULL)  

    {  

        LQ->rear=LQ->front;  

    }  

    free(p);  

    return 1;  

}  

  

int main()  

{  

    LinkQueue *Q;  

    Q=(LinkQueue *)malloc(sizeof(LinkQueue));  

    LinkList *p;  

    int n,m,x,fx;  

    InQueue(Q);  

    printf("请输入入队元素个数n:\n");  

    scanf("%d",&n);  

printf("请输入入队元素:\n");

    for(int i=1; i<=n; i++)  

     {  

scanf("%d",&m);

        EnQueue(Q, m);  

     }  

  

    GetFront(Q, &fx);  

    printf("队首元素:%d\n", fx);  

  

    printf("输出队列元素:\n");  

    for(p=Q->front->next; p!=NULL; p=p->next)  

     {  

        printf("%3d", p->data);  

     }  

    for(int i=1; i<=n; i++)  

     {  

        OutQueue(Q, &x);  

        printf("\n出队元素:%d\n", x);  

     }  

  

    system("pause");  

    return 0;  

}

运行结果:

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值