• 链式栈完善版


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

    抽象数据类型代码:

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

    完美收工。

  • 相关阅读:
    linux学习笔记--文件
    linux学习笔记——基础命令
    nginx实现动静分离
    keepalived+nginx高可用负载均衡环境搭建
    keepalived衡环境搭建
    redis配置文件redis.conf说明
    基于sentinel 的redis集群环境搭建
    jdk动态代理
    spring的事物实现
    Linux用户配置
  • 原文地址:https://www.cnblogs.com/fistao/p/3040046.html
Copyright © 2020-2023  润新知