码迷,mamicode.com
首页 > 其他好文 > 详细

数据结构-使用队列实现栈

时间:2017-09-28 16:46:00      阅读:220      评论:0      收藏:0      [点我收藏+]

标签:data   一个   col   style   三次   val   return   stack   默认   

1:考点:编程实现下面的stack,并根据stack完成queue的操作

class MyStack

{

    void push(data);

    void pop(&data);

    bool isEmpty();

}

代码如下:

技术分享
#include "stdafx.h"
#include<malloc.h>
#include <iostream>
#include <assert.h>
using namespace std;
/*单链表的节点,data表示节点的数据域,next指向下一个节点*/
class MyData
{
public: 
    MyData() :data(0), next(NULL) {};//默认构造函数,这样表示后,主体中不用再写这个函数了
    MyData(int value) :data(value), next(NULL) {};//带参数的构造函数
    int data;//数据域
    MyData *next;//下一个节点
};

/*表示栈的定义,其中public成员top表示栈顶,由于不能直接操作栈底,因此这里没有定义栈底的指针。
在默认构造函数中,把栈顶指针top置空,表示此时栈为空栈。*/
class MyStack
{
public:
    MyStack() :top(NULL) {};//默认构造函数
    void push(MyData data);//进栈
    void pop(MyData *pData);//出栈
    bool IsEmpty();//是否为空栈
    MyData *top;//栈顶
};


//进栈
void MyStack::push(MyData data)
{
    MyData *pData = NULL;
    pData = new MyData(data.data);//生成新节点
    pData->next = top;
    top = pData;
    /*---测试---*/
    //cout << "栈顶地址:" << top << endl;
    //cout << "栈顶地址中的内容:" << top->data << endl;
    /*---*/
}

//判断栈是否为空
bool MyStack::IsEmpty()
{
    return(top == NULL);//如果top为空,则返回1,否则返回0
}

//出栈
void MyStack::pop(MyData *data)//将删除的节点保存到data中
{
    if (IsEmpty())//如果栈为空,直接返回
    {
        return;
    }
    data->data = top->data;//给传出的参数赋值
    MyData *p = top;//临时保存原栈顶节点
    top = top->next;//移动栈顶,指向下一个节点
    delete p;//释放原栈顶节点内存
}

int main()
{
    MyData data(0);//定义一个节点,使用带参数的构造函数
    MyStack s;//定义一个栈结构
    s.push(MyData(1));
    s.push(MyData(2));
    s.push(MyData(3));
    s.pop(&data);//第一次出栈,并且将删除的节点的数据保存到data参数中
    cout << "pop" << data.data << endl;
    s.pop(&data);//第二次出栈,并且将删除的节点的数据保存到data参数中
    cout << "pop" << data.data << endl;
    s.pop(&data);//第三次出栈,并且将删除的节点的数据保存到data参数中
    cout << "pop" << data.data << endl;
    cout << "Empty=" << s.IsEmpty() << endl;//打印判空
    return 0;
}
View Code

运行结果:

技术分享

 

数据结构-使用队列实现栈

标签:data   一个   col   style   三次   val   return   stack   默认   

原文地址:http://www.cnblogs.com/lovemi93/p/7607117.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!