1. 程式人生 > >C語言實現迴圈隊

C語言實現迴圈隊

#include <stdio.h>
#include <stdlib.h>
#define MAXSIZE 100 //巨集定義MAXSIZE數值
typedef int ElemType;
typedef struct queue//定義結構體
{
    ElemType data[MAXSIZE];
    int front,rear;//定義隊頭,隊尾
} Cirqueue;


Cirqueue *InitCirqueue()//置空隊
{
    Cirqueue *q;
    q = (Cirqueue *)malloc(sizeof(Cirqueue));
    q->front = q->rear = 0;
    return q;


}


void EnCirquene (Cirqueue *q, ElemType x)//入隊
{
    int i,a;
    if((q->rear+1)%MAXSIZE == q->front)
    {
        printf("隊滿");
        return;
    }
    printf("請輸入你想入隊的個數:");
    scanf("%d",&a);
    printf("請輸入你想入隊的數字:");
    for(i=0; i<a; i++)
    {
        scanf("%d",&x);
        q->data[q->rear] = x;//賦值給q->data[]
        q->rear=(q->rear+1)%MAXSIZE;
    }
}


void DeCirquene(Cirqueue *q, int *x)//出隊
{
    if(q->front == q->rear)//判隊空
    {
        printf("隊空");
        return;
    }
    else
    {
        *x = q->data[q->front];//讀出隊頭元素
        q->front = (q->front+1)%MAXSIZE;
        printf("%d\n",*x);
    }
}


void printquene(Cirqueue *q)
{
    int i;
    printf("隊中元素為:");
    if(q->rear > q->front)
    {
        for(i = q->front; i < q->rear; i++)
        {
            printf("%-4d",q->data[i]);
        }
    }
    else
    {
        for(i = q->front; i<MAXSIZE;i++)
         printf("%-4d",q->data[i]);
    }
}


int main()
{
    int a,x,m;
    int *p;
    Cirqueue *cq = InitCirqueue();
    while(1)
    {
        printf("\t\t1,入隊\n");
        printf("\t\t2,出隊\n");
        printf("\t\t3,列印\n");
        printf("\t\t請輸入你的操作:");
        scanf("%d",&a);
        switch(a)
        {
        case 1:
            EnCirquene(cq,x);
            system("pause");
            system("cls");
            break;
        case 2:
            DeCirquene(cq,&p);
            system("pause");
            system("cls");
            break;
        case 3:
            printquene(cq);
            printf("\n");
            system("pause");
            system("cls");
            break;
        }
    }
    return 0;
}