c++实现栈和队列类

栈(Stack)

Stack示意图

Stack.cpp

#pragma once
#include "ListStu.cpp"

template<typename T>
class Stack
{
public:
/* 
	* void push(T& tDate)
	* 参数一 : T& 用户数据
	* 功能   :往链表的头部压入一个数据
	* 返回值 :无
*/
	void push(const T& tDate);

/*
	* void pop()
	* 参数一 : 无
	* 功能   :往链表的头部弹出一个数据,删除头数据
	* 返回值 :无
*/
	void pop();

/*
	* void GetTopDate()
	* 参数一 : 无
	* 功能   :获取栈顶数据
	* 返回值 :T&
*/
	T& GetTopDate();

/*
	* int GetCount()
	* 参数一 : 无
	* 功能   :获取栈的元素个数
	* 返回值 :int
*/
	int GetCount();

private:
	ListStu<T> m_Stack;//栈双向链表指针
};

template<typename T>
void Stack<T>::push(const T& tDate)
{
	m_Stack.HeadInsert(tDate);
}

template<typename T>
void Stack<T>::pop()
{
	m_Stack.DeleteHead();
}

template<typename T>
T& Stack<T>::GetTopDate()
{
	return *(m_Stack.begin());
}

template<typename T>
int Stack<T>::GetCount()
{
	return m_Stack.Size();
}

队列(queue)

queue 示意图

queue.cpp

#pragma once
#include "ListStu.cpp"
template<typename T>
class Queue
{
public:
	/*
	* void push(T& tDate)
	* 参数一 : T& 用户数据
	* 功能   :往链表的尾部压入一个数据
	* 返回值 :无
*/
	void push(const T& tDate);

	/*
		* void pop()
		* 参数一 : 无
		* 功能   :往链表的头部弹出一个数据,删除头数据
		* 返回值 :无
	*/
	void pop();

	/*
		* void GetTopDate()
		* 参数一 : 无
		* 功能   :获取栈顶数据
		* 返回值 :T&
	*/
	T& GetTopDate();

	/*
		* int GetCount()
		* 参数一 : 无
		* 功能   :获取栈的元素个数
		* 返回值 :int
	*/
	int GetCount();


private:
	ListStu<T> m_Queue;//队列双向链表,排队:后进后出原则--push尾部插入,pop 头先出
};


template<typename T>
void Queue<T>::push(const T& tDate)
{
	m_Queue.VailInsert(tDate);
}

template<typename T>
void Queue<T>::pop()
{
	m_Queue.DeleteHead();
}

template<typename T>
T& Queue<T>::GetTopDate()
{
	return *(m_Queue.begin());
}

template<typename T>
int Queue<T>::GetCount()
{
	return m_Queue.Size();
}

转载请说明出处内容投诉
CSS教程_站长资源网 » c++实现栈和队列类

发表评论

欢迎 访客 发表评论

一个令你着迷的主题!

查看演示 官网购买