失敗したスタック設計:ありません必要なすべてのデータが構造に追加されているスタックの設計 - 非常に厄介

#define M 10
#include <stdio.h>
int outQueue(struct Queue loopqueue);
void initQueue(struct Queue loopqueue);
int enQueue(struct Queue loopqueue, int num);
//设计队列的结构
struct Queue
{
    int front;
    int tail;
    int array[M];
    int size;
    int capcity
} loopqueue;

//设计一个出队队列

int outQueue(struct Queue loopqueue)
{
    int tmp;
    if (loopqueue.size <= 0)
    {
        return NULL;
    }
    else
    {
        loopqueue.front++;
        loopqueue.size--;
        tmp = loopqueue.array[loopqueue.front];
        return tmp;
    }
}
//初始化队列
void initQueue(struct Queue loopqueue)
{
    loopqueue.front = loopqueue.tail = 0;
    loopqueue.size = 0;
}
//入队列
int enQueue(struct Queue loopqueue, int num)
{
    //可以通过数组中的元素个数与总容量判断是不是满了 也可以根据首尾指针来判断
    int temp1;
    if (loopqueue.size >= M - 1)
    {
        printf("队列已经满了");
        return -1;
    }
    else
    {
        //考虑
        if (loopqueue.tail == loopqueue.capcity)
        {
            temp1 = (loopqueue.tail + 1) % loopqueue.capcity;
            loopqueue.tail = temp1;
            loopqueue.array[loopqueue.tail] = num;
        }
        else
        {
            loopqueue.array[loopqueue.tail++] = num;
            loopqueue.size++;
        }
    }
}
//对队列进行遍历
void traverQueue(struct Queue loopqueue) 
{
    int temp;
    while (loopqueue.size > 0)
    {
        if (loopqueue.front < loopqueue.capcity)
        {
            printf("%d",loopqueue.array[loopqueue.front]);
            loopqueue.front++;
        }

        else
        {
            temp = (loopqueue.front+1)%loopqueue.capcity;
            printf("%d",loopqueue.array[temp]);
            loopqueue.front = temp;
        }
        loopqueue.size--;
    }
}

void main()
{

    struct Queue queue;
    initQueue(queue);
    enQueue(queue, 10);
    traverQueue(queue);
    
}
彼は187元の記事を発表 ウォン称賛29 ビュー50000 +

おすすめ

転載: blog.csdn.net/qq_42664961/article/details/104087254