关于利用C++ 栈 的用法

来源:百度知道 编辑:UC知道 时间:2024/06/12 00:43:10
void main()
{
Stack S;

char x,y;
x='c';
y='k';
InitStack(S)
push(S,x);
push(S,'a');
push(S,y);
pop(S,x);

push(S,'t');
push(S,x);
pop(S,x);
push(S,'s');
while(! StackEmpty(S))
{pop(S,y);printf(y);};
printf(x);}
在上面程序的基础上(可以修改)
要求输出 'stack'
我想要一个有详细说明,且我可以直接复制到VC++ 就可以编译出来的程序

用C++为什么还要编这种数据和实现脱节的代码呢?利用类封装一下,代码要比用C写的优雅的多:

#include <iostream>
#include <cstddef>

template <class T>
class stack {
public:
stack() : sp(0){}
void push(const T& data)
{
Elem* newElem = new Elem;
newElem->prev = sp ? sp : 0;
newElem->data = data;
sp = newElem;
}

void pop()
{
Elem* oldElem = sp;
sp = sp->prev;

if(oldElem)
delete oldElem;
}

const T& top()const
{
if(sp)
return sp->data;
else
throw ("underflow");
}
bool empty()const
{
return !sp;
}

private:
size_t size;
struct Elem {
Elem* prev;
T data;
}*sp;
};