首页 > 代码库 > 【ThinkingInC++】34、带有构造函数和析构函数的Stack

【ThinkingInC++】34、带有构造函数和析构函数的Stack

头文件

/**
* 书本:【ThinkingInC++】
* 功能:带有构造函数和析构函数的Stack
* 时间:2014年8月27日11:13:10
* 作者:cutter_point
*/
#ifndef STACK3_H_INCLUDED
#define STACK3_H_INCLUDED

class Stack
{
    struct Link
    {
        void* data;
        Link* next;
        Link(void* dat, Link* nxt);
        ~Link();
    }*head;
public:
    Stack();
    ~Stack();
    void push(void* dat);   //压入一个数据
    void* peek();   //返回栈的顶元素但是在栈中不删除元素
    void* pop();    //返回栈顶元素,并且从栈中删除这个元素
};


#endif // STACK3_H_INCLUDED


定义文件

/**
* 书本:【ThinkingInC++】
* 功能:关于Stack的够着函数
* 时间:2014年8月27日11:13:14
* 作者:cutter_point
*/

#include"Stack3.h"
#include"../require.h"

using namespace std;

/*
    struct Link
    {
        void* data;
        Link* next;
        Link(void* dat, Link* nxt);
        ~Link();
    }*head;
public:
    Stack();
    ~Stack();
    void push(void* dat);   //压入一个数据
    void* peek();   //返回栈的顶元素但是在栈中不删除元素
    void* pop();    //返回栈顶元素,并且从栈中删除这个元素
*/
Stack::Link::Link(void* dat, Link* nxt)
{
    data=http://www.mamicode.com/dat;>

测试文件

/**
* 书本:【ThinkingInC++】
* 功能:测试程序的使用
* 时间:2014年8月27日11:13:20
* 作者:cutter_point
*/

#include"Stack3.cpp"
#include"../require.h"
#include<fstream>
#include<iostream>
#include<string>

using namespace std;

int main()
{
    ifstream in("Stack3Test.cpp");
    assure(in, "Stack3Test.cpp");
    Stack textlines;
    string line;

    while(getline(in, line))
        textlines.push(new string(line));   //压栈,倒序输出

    string* s;
    while((s=(string*)textlines.pop()) != 0)
    {
        cout<<*s<<endl;
        delete s;
    }

    return 0;
}


最近想了想是不是要恢复的以前的吧那些理论的东西也写进来呢?因为我们查博客的时候,但看程序的话,有些地方还是不懂的,虽然我写了大量的注释,但是感觉还是要有个层次性的东西。





【ThinkingInC++】34、带有构造函数和析构函数的Stack