zoukankan      html  css  js  c++  java
  • 链栈

    //节点结构定义
    template <typename T>
    struct Node {
    	T date;
    	Node<T> * next;
    };
    template<typename T>
    class SeqStack {
    public:
    	SeqStack();
    	~SeqStack();
    	void Push(T x);
    	T Pop();
    	T GetPop();
    	int Empty();
    private:
    	Node<T> * top;
    };
    template <typename T>
    SeqStack<typename T>::SeqStack()
    {
    	top = new Node<T>;
    	top->next = nullptr;
    }
    //析构
    template <typename T>
    SeqStack<typename T>::~SeqStack()
    {
    	Node <T>* q = nullptr;
    	while (top != nullptr)
    	{
    		q = top;
    		top = top->next;
    		delete q;
    	}
    }
    //入栈
    template <typename T>
    void SeqStack<typename T>::Push(T x)
    {
    	Node <T> *s = nullptr;
    	s = new Node<T>;
    	s->date = x;
    	s->next = top;
    	top = s;//将节点s插入栈顶
    }
    //出栈
    template <typename T>
    T SeqStack<typename T>::Pop()
    {
    	Node<T> *p = nullptr;
    	T x;
    	if (top == nullptr)
    		throw"下溢";
    	x = top->date;
    	p = top;
    	top = top->next;
    	delete p;
    	return x;
    }
    //判空操作
    template <typename T>
    int SeqStack<typename T>::Empty()
    {
    	if (top == nullptr)
    		throw"下溢异常";
    	else
    		return 0;
    }
    template <typename T>
    T SeqStack<typename T>::GetPop()
    {
    	if (top == nullptr)
    		throw"下溢异常";
    	else
    		return top->date;
    }
    #include <iostream>
    using namespace std;
    int main() {
    	int x;
    	SeqStack<int> S;
    	S.Push(15); S.Push(10); S.Push(20); S.Push(25);
    	cout << "栈顶元素为:" << S.GetPop() << endl;
    	x = S.Pop();
    	cout << "执行一次出栈操作,删除元素:" << x << endl;
    	cout << "请输入待插入元素:";
    	cin >> x;
    	S.Push(x);
    	if (S.Empty() == 1)
    		cout << "栈为空" << endl;
    	else
    	{
    		cout << "栈非空" << endl;
    		cout << "栈顶元素为:" << S.GetPop() << endl;
    	}
    	return 0;
    }
    
  • 相关阅读:
    swiper获取当前的index ( loop=true时,)
    解决ios浏览器页面滚动到底部或顶部后,页面局部滑动失效的问题
    js实现全屏与退出全屏
    Ueditor 关于视频上传相关问题
    git拉取单个子目录
    XShell上传文件到Linux服务器上
    Debian中安装MySQL服务器
    lamda表达式的由来
    工具类--验证码工具类
    工具类--线程相关工具类
  • 原文地址:https://www.cnblogs.com/yonglin1998/p/11780794.html
Copyright © 2011-2022 走看看