1. 程式人生 > >資料結構---佇列(順序表實現)

資料結構---佇列(順序表實現)

一、理論知識

待續

二、程式碼實現

1.佇列結構體定義

typedef int ElemType;
typedef struct Queue
{
    ElemType* pBase;
    int size;
    ElemType front;
    ElemType rear;
    int length;
}*pQueue;

2.初始化佇列

void initQueue(pQueue qu,ElemType length)
{
    qu->size = 0;
    qu->length = length;
    qu->pBase = new ElemType[qu->length];
    qu->front = -1;
    qu->rear = -1;
}

3.判斷佇列是否為空

bool isEmpty(pQueue qu)
{
    return ((qu->front == -1) && (qu->rear == -1));
}

4.判斷佇列是否已滿

bool isFully(pQueue qu)
{
    return (qu->rear==qu->length-1);
}

5.壓佇列

void pushQueue(pQueue qu, ElemType data)
{
    if (isFully(qu))
        return;
    qu->pBase[qu->rear+1] = data;
    qu->rear++;
    qu->size++;
}

6.出佇列

ElemType popQueue(pQueue qu)
{
    if (isEmpty(qu))
        return -1;
    ElemType popData = qu->pBase[qu->front + 1];
    for (int i = 0; i < qu->size; ++i)
        qu->pBase[i] = qu->pBase[i + 1];
    qu->size--;
    qu->rear--;
    return popData;
}

7.列印佇列

void showQueue(pQueue qu)
{
    if (isEmpty(qu))
    {
        printf("棧為空,無法列印!\n");
    return;
    }
    for (int i = 0; i < qu->size; ++i)
        printf("%d->", qu->pBase[i]);
}

8.程式碼演示