zoukankan      html  css  js  c++  java
  • 栈是一种特殊的线性表,主要是先进后出。

    主要函数包括:压栈、出栈、清空栈、栈长度

    主要代码如下:

    #include <iostream>
    using namespace std;
    
    template<class T>
    class sstackNode
    {
    public:
    	sstackNode(){next=0;}
    	T data;
    	sstackNode<T> *next;
    };
    
    template <class T>
    class Mystack
    {
    public:
    	Mystack();//初始化
    	unsigned int MystackLength();//返回栈的长度
    	void push(T x);//入栈
    	void pop();//出栈
    	T top();//获取栈顶数据
    	void clear();//清空栈
    	bool isEmpty();//判断是否为空
    private:
    protected:
    	unsigned int stacklength;
    	sstackNode <T> *node;
    	sstackNode <T> *headnode;
    };
    template <class T>
    Mystack<T>::Mystack()//初始化
    {
    	stacklength	=0;
    	headnode=NULL;
    }
    template <class T>
    unsigned int Mystack<T>::MystackLength()//返回栈的长度
    {
    	return stacklength;
    }
    
    template <class T>
    void Mystack<T>::push(T x)//入栈
    {
    	node=new sstackNode<T>();
    	node->data=x;
    	if (headnode==NULL)
    	{
    		node->next=NULL;
    	}
    	else
    	{
    		node->next=headnode;
    	}
    	headnode=node;
    	stacklength++;
    }
    
    template <class T>
    void Mystack<T>::pop()//出栈
    {
    	if (headnode==NULL)
    	{
    		return;
    	}
    	else
    	{
    		if (headnode->next=NULL)
    		{
    			delete(headnode);
    			headnode=NULL;
    		}
    		else
    		{
    			node=headnode;
    			headnode=node->next;
    			delete(node);	
    			node=NULL;
    		}
    		stacklength--;
    	}
    }
    
    template <class T>
    T Mystack<T>::top()//获取栈顶数据
    {
    	return(headnode->data);
    }
    
    template <class T>
    void Mystack<T>::clear()//清空栈
    {
    	if (headnode==NULL)
    	{
    		return;
    	}
    	while(headnode!=NULL)
    	{
    		node=headnode;
    		headnode=headnode->next;
    		delete(node);
    		node=NULL;
    	}
    	stacklength=0;
    }
    
    template <class T>
    bool Mystack<T>::isEmpty()//判断是否为空
    {
    	if (0==stacklength)
    	{
    		return true;
    	}
    	else
    		return false;
    }
    

      

  • 相关阅读:
    C++实例 分解质因数
    C++语言 堆排序
    下载吧压缩工具(360超级注释压缩)
    unresolved external symbol __endthreadex错误解决
    C语言 常用函数A
    C++实例 获取进程所在文件夹
    IIS 服务或万维网发布服务,或者依赖这 服务可能在启动期间发生错误或者已禁用
    字體的css
    ubuntu下mono初体验<一>
    NOSQL之mongodb简介及安装 for linux(centOS)<二>
  • 原文地址:https://www.cnblogs.com/lanye/p/3240403.html
Copyright © 2011-2022 走看看