数据结构4_链栈
用指针方式实现栈,相对于顺序栈,指针方式不用指定栈的大小,
先定义一个栈节点类,再定义一个链栈类,为使链栈类能访问栈节点的元素,设链栈类为栈节点类的友元类。
#include<iostream>
using namespace std;
class LinkStack;
class StackNode //设计每个节点的类型
{
char *data;
StackNode *next;
friend class LinkStack; //设置友元类,以便LinkStack类访问其元素
};
class LinkStack
{
StackNode *top;
public:
LinkStack()
{
top=NULL;
}
int stackempty() //判断是否空栈
{
return top==NULL;
}
void push(char *e)//入栈
{
StackNode *q;
q=new StackNode;
q->data=new char(sizeof(e)+1);
strcpy(q->data,e);
q->next=top; //q的下一个节点指向顶栈
top=q; //顶栈指针指向当前指针;西电用教材中c代码出错
}
void pop(char *&e)
{
StackNode *q=top;
if(stackempty())
{
cout<<"stack underflow"<<endl;
return;
}
e=new char(sizeof(q->data)+1);
strcpy(e,q->data);
top=q->next;
delete q;
}
void show() //栈的显示
{
StackNode *q=top;
while(q!=NULL)
{
cout<<q->data<<endl;
q=q->next;
}
}
};
void main()
{
LinkStack a;
a.push("sb");
a.push("test");
a.push("stack");
char *e;
a.pop(e);
cout<<"pop is: "<<e<<endl;
a.push("link");
a.show();
}
posted on 2014-05-19 22:10 zhuangwy_CV 阅读(462) 评论(0) 编辑 收藏 举报