zoukankan      html  css  js  c++  java
  • 数据结构与算法--用队列实现栈操作

    问题描述

    借助队列,编程实现栈的入栈和出栈操作。
    

    核心步骤

    • 厘清队列与栈的特性

    • 入栈操作

    • 出栈操作

    • 编程实现

    #include <iostream>
    #include <stdio.h>
    #include <stdlib.h>
    #include <conio.h>
    using namespace std;
    
    typedef struct student
    {
        int data;
        struct student *next;
    }node;
    
    typedef struct stackqueue
    {
        node *bottom, *top;
    }queue;
    
    //入栈
    queue *push(queue *HQ, int x)
    {
        node *s;
        s = (node *)malloc(sizeof(node));
        s->data = x;
        s->next = NULL;
    
        if(HQ->top==NULL)
        {
            HQ->bottom = s;
            HQ->top = s;
        }
        else
        {
            HQ->top->next = s;
        }
        return HQ;
    }
    
    // 出栈
    queue *pop(queue *HQ)
    {
        node *p; int x;
        if (HQ->bottom==NULL)
        {
            printf("
     溢出");
        }
        else
        {
            x = HQ->top->data;
            p = HQ->bottom;
            if(HQ->top==HQ->bottom)
            {
                HQ->top = NULL;
                HQ->bottom = NULL;
            }
            else
            {
                while(p->next != HQ->top)
                {
                    p = p->next;
                }
                HQ->top = p;
                hQ->top->next = NULL;
            }
            return HQ;
        }
    }
    
  • 相关阅读:
    lightoj1140_数位dp
    lightoj1057_状压dp
    lightoj1068_数位dp
    lightoj1018_状压dp
    lightoj1217_简单dp
    lightoj1119_简单状压dp
    lightoj1037_状压dp
    lightoj1110_LCS并输出
    图论算法----最短路
    poj1182 食物链
  • 原文地址:https://www.cnblogs.com/CocoML/p/12726982.html
Copyright © 2011-2022 走看看