链式栈完善版

上一篇关于链式栈有一些小问题,这次解决了,记录一下。

抽象数据类型代码:

//栈内元素顶点
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;
	}
}

完美收工。

posted @ 2013-04-24 13:30  李VS超  阅读(223)  评论(0编辑  收藏  举报