• 数据结构


    链栈封装 C++

    使用C++对链栈进行了简单的封装,实现了栈的基本操作
    封装方法: pop(),top(),size(),empty(),push()

    代码已经过测试

    #pragma once
    #include <iostream>
    #include <algorithm>
    using namespace std;
    
    template<class T>class LinkNode{
    public:	
    	T data;
    	LinkNode *pnext;
    	LinkNode *ppre;
    };
    template<class T>class Stack {
    public:
          	 Stack();       //构造函数
    	void pop();         //弹出头元素
    	void push(T value); //入栈
    	bool empty();       //判断是否为空栈
    	int  size();        //返回栈的大小
    	  T  top();         //获取首元素
    private:
    	LinkNode<T> *head;
    	LinkNode<T> *tail;
    	int len;
    };
    
    template<class T>
    inline Stack<T>::Stack()
    {
    	this->head = nullptr;
    	this->tail = nullptr;
    	this->len = 0;
    }
    
    template<class T>
    inline void Stack<T>::pop()
    {
    	if (this->head == this->tail)
    	{
    		this->head = this->tail = nullptr;
    		this->len  = 0;
    		return;
    	}
    	LinkNode<T> *p = this->tail;
    	this->tail = p->ppre;
    	this->tail->pnext = nullptr;
    	free(p);
    	p = nullptr;
    	this->len--;
    }
    
    template<class T>
    inline void Stack<T>::push(T value)
    {
    	LinkNode<T> *newnode = new LinkNode<T>;
    	newnode->data = value;
    	if (this->len == 0)
    	{
    		this->head = newnode;
    		this->tail = newnode;
    		this->len++;
    	}
    	else {
    		tail->pnext = newnode;
    		newnode->ppre = tail;
    		this->tail = newnode;
    		this->len++;
    	}
    }
    
    template<class T>
    inline bool Stack<T>::empty()
    {
    	if (this->len == 0)
    	return true;
    	else return false;
    }
    
    template<class T>
    inline int Stack<T>::size()
    {
    	return this->len;
    }
    
    template<class T>
    inline T Stack<T>::top()
    {
    	return T(this->tail->data);
    }
    

    如果大家有什么疑问的话可以加qq向我提出哦,欢迎各位大佬指出问题。
    如果你觉得对你有所帮助的话就给我点个赞,点燃我下次写文章的动力吧 ^_^ !

  • 相关阅读:
    Java里的时间类以及函数
    递归方法理解快速排序算法
    Java操作读取写入文本TXT及XML文件内容
    java控制Office套件API(POI加JXL)网上摘录留工作备查
    通过直接预分区的方式建表
    自用JavaMail实现
    阿里巴巴java开发手册学习记录,php版
    PHP 常用的header头部定义汇总
    这里有123个黑客必备的Python工具!
    PHP/JS中获取当前页面的完整URL
  • 原文地址:https://www.cnblogs.com/wlw-x/p/11609681.html
Copyright © 2020-2023  润新知