读书人

双端行列(deque)链表实现

发布时间: 2013-03-06 16:20:31 作者: rapoo

双端队列(deque)链表实现

我们知道栈和队列都是受限的线性表,

栈是只能尾部添加,删除元素.

队列是只能尾部添加元素,头部删除元素.

那假如想要头部和尾部都可以添加和删除元素呢? 于是就出现了双端队列.双端队列主要功能如下:

void EnQueHead(T val);//头部添加元素

void EnQueEnd(T val); //尾部添加元素

T DeQueHead();//头部删除元素

T DeQueEnd(); //尾部删除元素

双端队列单链表实现

单链表定义见:http://blog.csdn.net/weiwenhp/article/details/8634469

#include "LinkList.h"

template<class T>

class DQue

{

private:

LinkList<T> m_pList;

public:

void EnQueHead(T val){m_pList.InsertAt(0,val);}

void EnQueEnd(T val){m_pList.Add(val);}

T GetEnd(){return m_pList.GetTailVal();}

T GetHead(){return m_pList.GetHeadVal();}

T DeQueHead(){

T val = m_pList.GetHeadVal();

m_pList.RemoveAt(0);

return val;

}

T DeQueEnd(){

T val = m_pList.GetTailVal();

m_pList.Remove();

return val;

}

int Size(){return m_pList.Size();}

void Clear() { m_pList.Clear(); }

};

读书人网 >编程

热点推荐