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;
    }
    
  • 相关阅读:
    手动去除迅雷7广告
    MIPS学习笔记
    龙芯中断系统
    《ecos增值包》之FAT文件系统篇
    MIPS架构学习笔记
    【3D数学】之向量
    【温故Delphi】之窗口ShowModal
    【Manage It】之项目规划
    【3D数学】之坐标系
    【Manage It】之启动项目
  • 原文地址:https://www.cnblogs.com/yonglin1998/p/11780794.html
Copyright © 2011-2022 走看看