栈作为数据结构很重要的一部分 不是很难 但是对于解决很多复杂问题有责非常重要的作用 栈的逻辑结构可以是顺序或者链序的 相对应的是数组实现和指针实现 在这里分别给出相应的源码,博主采用的是面向对象实现。
1.链栈
#include <iostream>
using namespace std;
class node{
public:
int data;
node* next;
};
class stack //该栈为带头结点的链栈
{
public:
stack();
~stack();
bool empty();
void pushstack(int );
void popstack();
void gettop();
void printstack();
private:
node* top;
protected:
};
stack::stack()
{
top->next=NULL;
}
stack::~stack()//析构函数 删除链栈
{
node* p=new node;
node* q=top->next;
while(q){
p=q;
q=q->next;
delete p;
}
}
bool stack::empty()//判空
{
if(top->next==NULL)
return true;
return false;
}
void stack::gettop()//打印栈顶元素
{
if(empty())
cout<<"empty stack"<<endl;
cout<<"top element is "<<top->next->data<<endl;
}
void stack::pushstack(int a)//压栈
{
node* p=new node;
p->data=a;
p->next=top->next;
top->next&#