会员
周边
众包
新闻
博问
闪存
所有博客
当前博客
我的博客
我的园子
账号设置
简洁模式
...
退出登录
注册
登录
独奏
博客园
首页
新随笔
联系
管理
订阅
c++链循环队列模板
/**/
/*
*****************************************************
*/
/**/
/*
独奏者 2009-09-03
/*
/*说明:循环队列模板
/*
/*
/******************************************************
*/
//
模板声明
template
<
class
T
>
struct
QueueNode
{
T typeData;
QueueNode
*
nextNode;
}
;
template
<
class
T
>
struct
QueueHead
{
QueueNode
<
T
>*
QueueFront;
//
队头
QueueNode
<
T
>*
QueueRear;
//
队尾
int
iQueueCount;
//
队列元素个数
int
iQueueLen;
//
队列长度
}
;
template
<
class
T
>
class
DZ_Queue
{
public
:
DZ_Queue();
DZ_Queue(
int
iLen);
~
DZ_Queue();
bool
IsEmpty();
bool
IsFull();
int
GetLength();
int
GetCount();
bool
Insert(
const
T
&
data);
bool
Delete(T
&
data);
bool
Front(T
&
data);
private
:
QueueHead
<
T
>
m_QueueHead;
}
;
template
<
class
T
>
DZ_Queue
<
T
>
::DZ_Queue()
{
m_QueueHead.QueueFront
=
NULL;
m_QueueHead.QueueRear
=
NULL;
m_QueueHead.iQueueLen
=
64
;
m_QueueHead.iQueueCount
=
0
;
}
template
<
class
T
>
DZ_Queue
<
T
>
::DZ_Queue(
int
iLen)
{
m_QueueHead.QueueFront
=
NULL;
m_QueueHead.QueueRear
=
NULL;
m_QueueHead.iQueueLen
=
iLen;
m_QueueHead.iQueueCount
=
0
;
}
template
<
class
T
>
DZ_Queue
<
T
>
::
~
DZ_Queue()
{
T typeData;
while
(
!
IsEmpty())
{
Delete(typeData);
}
}
template
<
class
T
>
bool
DZ_Queue
<
T
>
::IsEmpty()
{
if
(
0
==
m_QueueHead.iQueueCount )
return
true
;
else
return
false
;
}
template
<
class
T
>
bool
DZ_Queue
<
T
>
::IsFull()
{
if
( m_QueueHead.iQueueLen
==
m_QueueHead.iQueueCount )
return
true
;
else
return
false
;
}
template
<
class
T
>
int
DZ_Queue
<
T
>
::GetLength()
{
return
m_QueueHead.iQueueLen;
}
template
<
class
T
>
int
DZ_Queue
<
T
>
::GetCount()
{
return
m_QueueHead.iQueueCount;
}
template
<
class
T
>
bool
DZ_Queue
<
T
>
::Insert(
const
T
&
data)
{
if
(IsFull())
return
false
;
QueueNode
<
T
>*
pQueueNode
=
new
QueueNode
<
T
>
;
if
( NULL
==
pQueueNode)
return
false
;
if
( IsEmpty() )
{
m_QueueHead.QueueFront
=
pQueueNode;
}
pQueueNode
->
typeData
=
data;
pQueueNode
->
nextNode
=
NULL;
if
( NULL
==
m_QueueHead.QueueRear )
m_QueueHead.QueueRear
=
pQueueNode;
else
m_QueueHead.QueueRear
->
nextNode
=
pQueueNode;
m_QueueHead.QueueRear
=
pQueueNode;
m_QueueHead.iQueueCount
++
;
return
true
;
}
template
<
class
T
>
bool
DZ_Queue
<
T
>
::Delete(T
&
data)
{
if
( IsEmpty() )
return
false
;
QueueNode
<
T
>*
pQueueNode
=
NULL;
pQueueNode
=
m_QueueHead.QueueFront;
data
=
m_QueueHead.QueueFront
->
typeData;
m_QueueHead.QueueFront
=
m_QueueHead.QueueFront
->
nextNode;
delete (pQueueNode);
m_QueueHead.iQueueCount
--
;
if
(IsEmpty())
{
m_QueueHead.QueueFront
=
NULL;
m_QueueHead.QueueRear
=
NULL;
}
return
true
;
}
template
<
class
T
>
bool
DZ_Queue
<
T
>
::Front(T
&
data)
{
if
( IsEmpty() )
return
false
;
data
=
m_QueueHead.QueueFront
->
typeData;
return
true
;
}
posted @
2009-09-03 22:39
独奏者
阅读(
1410
) 评论(
0
)
编辑
收藏
举报
会员力量,点亮园子希望
刷新页面
返回顶部
公告