首页 > 代码库 > 数据结构4_链栈
数据结构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();
}
来自为知笔记(Wiz)
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。