《数据结构与算法》第7章 两个队列实现一个栈 (C语言)

前一节我们讲解了两个栈实现一个队列,现在我们用两个队列实现一个栈。

关于栈和队列的特点在前一节我们已经讲解过了,现在我们直接看用两个队列实现栈的出入。

7.1入栈

入栈很简单,只需要将队列q1入栈即可。

RfrwtK.png

int PushStack(sequeue_t *queue1, data_t data)
{
    if(queue1 == NULL)
    {
        return -1;
    }
    sequeue_en(queue1,data);

    return 0;
}

7.2出栈

出栈有两步操作:

第一步:先把q1(总数-1)的元素转移到q2中,取出q1的最后一个元素即为出栈。

Rfrg0I.png

第二步:把q2的元素转移会q1,。

Rfrhh8.png

data_t PopStack(sequeue_t *queue1, sequeue_t *queue2)
{
    data_t tmp;
    if((queue1 == NULL)||(queue1 == NULL))
    {
        return -1;
    }
    if(sequeue_is_empty(queue1))
    {
        printf("Stack Empty!\n");
    }
    else
    {
        if(sequeue_is_full(queue2))
        {
            printf("Stack Full!\n");
        }
        else
        {
            while(sequeue_length(queue1) != 1)
            {
                sequeue_en(queue2,sequeue_de(queue1));
            }
            tmp = sequeue_de(queue1);
            while(sequeue_is_empty(queue2)==0)
            {
                sequeue_en(queue1,sequeue_de(queue2));
            }

            return tmp;
        }
    }
}


资源获取方法

1.关注公众号[嵌入式实验楼]
2.在公众号回复关键词[Data Structures and Algorithms]获取资料提取码

嵌入式实验楼

Related posts

Leave a Comment