栈(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();
}