#pragma once
#ifndef _LINKEDSTACK_H_
#define _LINKEDSTACK_H_
#include <assert.h>
struct LinkNode
{
int data;
LinkNode *link;
LinkNode(LinkNode *ptr=NULL) {link=ptr;}
LinkNode(const int&item, LinkNode *ptr=NULL) : data(item), link(ptr) { }
};
class LinkedStack
{
public:
LinkedStack() : top(NULL) { }
~LinkedStack() {makeEmpty();}
void Push(const int& x)
{
top=new LinkNode(x, top);
assert(top!=NULL);
}
bool Pop(int& x)
{
if(IsEmpty()==true) return false;
LinkNode *p=top;
top=top->link; x=p->data; delete p;
return true;
}
bool getTop(int& x) const
{
if(IsEmpty()==true) return false;
x=top->data;
return true;
}
bool IsEmpty() const {return top==NULL;}
int getSize() const
{
LinkNode *p=top; int k=0;
while(p!=NULL) {p=p->link; k++;}
return k;
}
private:
void makeEmpty()
{
LinkNode *p=NULL;
while(p!=NULL) {p=top; top=top->link; delete p;}
}
private:
LinkNode *top;
};
#endif
链式栈
最新推荐文章于 2020-11-10 01:20:53 发布