链式栈完善版
上一篇关于链式栈有一些小问题,这次解决了,记录一下。
抽象数据类型代码:
//栈内元素顶点
struct Stacknode
{
int data;
Stacknode *nextnode;
};
//链式栈类定义
class Stack{
public:
//构造函数,析构函数
Stack()
{
top=NULL; //初始化栈顶指针
bottom=NULL;
}
~Stack(){}
//入栈,出栈函数
void Push(int data);
int Pop();
private:
Stacknode *top; //栈顶指针
Stacknode *bottom; //栈底指针
};
入栈函数代码:
void Stack::Push(int data) //链接顺序
{
if(top==NULL)
{
top=new Stacknode;
if(top==NULL)cout<<"内存分配错误"<<endl;
top->data=data;
bottom=top;
bottom->nextnode=NULL; //将第一个结点的指针域设置为空
}
else
{
top=new Stacknode;
if(top==NULL)cout<<"内存分配错误"<<endl;
top->data=data;
top->nextnode=bottom; //这个p应该记录上一次的位置
bottom=top; //这样写代码很完美
}
}
出栈函数:
int Stack::Pop()
{
Stacknode *p=NULL;
int data;
if(top!=NULL)
{
p=top;
data=p->data;
top=top->nextnode; //语法错误
delete p;
return data;
}
}
完美收工。

浙公网安备 33010602011771号