浙江大学版「データ構造(第2版)」問題セット演習-3.12

演習3.12代替の循環キュー(20ポイント)

循環配列を使用してキューを表す場合、キューのヘッドポインターのみがフロントに設定され、テールポインターはリアに設定されませんが、キュー内の要素の数を記録するために別のカウントが設定されます。キューのエンキューおよびデキュー操作を実装するアルゴリズムを記述してください。

例:

bool AddQ( Queue Q, ElementType X )
{
    if(Q->Count == Q->MaxSize) {
        printf("Queue Full\n");
        return false;
    }
    Q->Data[(Q->Front+Q->Count++)%Q->MaxSize] = X;
    return true;
}
ElementType DeleteQ( Queue Q )
{
    ElementType res;
    if(Q->Count == 0) {
        printf("Queue Empty\n");
        return ERROR;
    }
    res = Q->Data[Q->Front];
    Q->Front = (Q->Front+1) % Q->MaxSize;
    Q->Count--;
    return res;
}

アイデア:

カウントを使用してリアを計算します

 

おすすめ

転載: blog.csdn.net/u012571715/article/details/113034733