会员
周边
众包
新闻
博问
闪存
所有博客
当前博客
我的博客
我的园子
账号设置
简洁模式
...
退出登录
注册
登录
独奏
博客园
首页
新随笔
联系
管理
订阅
c++链栈模板
//
DZ_Stack.h: interface for the DZ_Stack class.
//
/**/
/**/
/**/
/////////////////////////////////////////////////////////////////////
/
#if
!defined(AFX_DZ_STACK_H__10036803_D752_4EF7_852D_DD6B377D7AB9__INCLUDED_)
#define
AFX_DZ_STACK_H__10036803_D752_4EF7_852D_DD6B377D7AB9__INCLUDED_
#if
_MSC_VER > 1000
#pragma
once
#endif
//
_MSC_VER > 1000
/**/
/**/
/**/
/*
**********************************************************************
*/
/**/
/**/
/**/
/*
独奏者 2009-09-02
/*
/*说明: 栈模板
/*
/*功能: 链表栈
/* 1,入栈 Push
/* 2,出栈 Pop
/* 3,取栈顶 Peek
/* 4,是否栈空 IsEmpty
/* 4,栈中数据个数 GetNodeCount
/*
/***********************************************************************
*/
//
模板声明
template
<
class
T
>
struct
StackNode
{
T typeData;
StackNode
*
nextNode;
}
;
template
<
class
T
>
class
DZ_Stack
{
public
:
bool
Push(
const
T data);
bool
Pop(T
&
data);
bool
Peek(T
&
data);
bool
IsEmpty();
DZ_Stack();
virtual
~
DZ_Stack();
private
:
StackNode
<
T
>
*
pStackTop;
int
iNodeCount;
}
;
//
模板实现
template
<
class
T
>
DZ_Stack
<
T
>
::DZ_Stack()
{
pStackTop
=
NULL;
iNodeCount
=
0
;
}
template
<
class
T
>
DZ_Stack
<
T
>
::
~
DZ_Stack()
{
while
(
!
IsEmpty())
{
StackNode
<
T
>
*
pStackNode
=
pStackTop;
pStackTop
=
pStackTop
->
nextNode;
delete (pStackNode);
pStackNode
=
NULL;
}
pStackTop
=
NULL;
}
template
<
class
T
>
bool
DZ_Stack
<
T
>
::Push(
const
T data)
{
StackNode
<
T
>
*
pStackNode
=
new
StackNode
<
T
>
;
if
( NULL
==
pStackNode )
return
false
;
pStackNode
->
typeData
=
data;
pStackNode
->
nextNode
=
pStackTop;
pStackTop
=
pStackNode;
iNodeCount
++
;
return
true
;
}
template
<
class
T
>
bool
DZ_Stack
<
T
>
::Pop(T
&
data)
{
if
( IsEmpty() )
return
false
;
data
=
pStackTop
->
typeData;
StackNode
<
T
>
*
pStackNode
=
pStackTop;
pStackTop
=
pStackTop
->
nextNode;
delete (pStackNode);
iNodeCount
--
;
return
true
;
}
template
<
class
T
>
bool
DZ_Stack
<
T
>
::Peek(T
&
data)
{
if
(IsEmpty())
return
false
;
data
=
pStackTop
->
typeData;
return
true
;
}
template
<
class
T
>
bool
DZ_Stack
<
T
>
::IsEmpty()
{
if
( NULL
==
pStackTop )
return
true
;
else
return
false
;
}
#endif
//
!defined(AFX_DZ_STACK_H__10036803_D752_4EF7_852D_DD6B377D7AB9__INCLUDED_)
posted @
2009-09-02 23:13
独奏者
阅读(
1462
) 评论(
0
)
编辑
收藏
举报
会员力量,点亮园子希望
刷新页面
返回顶部
公告