• 欢迎访问BruceOu的博客,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏本章吧

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

数据结构与算法 BruceOu 5个月前 (07-04) 134次浏览 0个评论

24QYG9.md.png

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

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

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]获取资料提取码

嵌入式实验楼


BrueceOu , 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:《数据结构与算法》第7章 两个队列实现一个栈 (C语言)
喜欢 (1)
[支付宝]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址