zoukankan      html  css  js  c++  java
  • 数据结构

    链栈封装 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向我提出哦,欢迎各位大佬指出问题。
    如果你觉得对你有所帮助的话就给我点个赞,点燃我下次写文章的动力吧 ^_^ !

  • 相关阅读:
    sqlserver添加表、字段注释
    SQL语句增加字段、修改字段、修改类型、修改默认值
    端口概念
    删除数据库数据
    转移数据库表数据
    优化网站
    提高SQL查询效率
    相关方法扩展
    SQL空和NULL的区别
    C#分布式缓存Couchbase使用
  • 原文地址:https://www.cnblogs.com/wlw-x/p/11609681.html
Copyright © 2011-2022 走看看