栈的链接存储结构
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
栈的链接存储结构
#include
using namespace std;
//单链表的结点结构体:
template
struct Node
{ DataType data;
Node
};
//带头结点的单链表类的声明
template
class LinkStack
{ public:
LinkStack( ){ top=NULL; } //构造函数
~LinkStack( ); //析构函数
bool IsEmpty( ); //栈空操作
DataType GetTop ( ); //得到栈顶值操作
void Push( DataType x ); //进栈操作
DataType Pop( ); //出栈操作
private:
Node
};
//析构函数,析构函数将单链表中所有结点的存储空间释放。
template
LinkStack
{ Node
while (top != NULL)
{ q = top; //暂存释放结点
top = top->next; //top指向被释放结点的下一个结点
delete q; //释放结点
}
cout<<"链表已经删除。"< } template bool LinkStack //进栈操作 template void LinkStack { Node s=new Node s->data=x; s->next=top; top=s; }; //出栈操作 template DataType LinkStack { Node if (IsEmpty()){ cout<<"栈空无值弹出"< delete p; return x; }; //返回栈顶值操作 template DataType LinkStack { if (IsEmpty()){ cout<< "栈空无值" < }; void main() { LinkStack cout << "栈是否空: " << s.IsEmpty() << endl; //进栈操作 cout << "输入栈值,输入-1结束:"; int x; cin>>x; while(x != -1) { s.Push(x); cin>>x; } //取值操作 cout <<"取值操作:"< //出栈操作 cout << "出栈顺序是: "; x=1; while(x!=-1){ x=s.Pop(); cout < cout << endl ; }