My road to c++
C++博客
首页
新随笔
联系
聚合
管理
随笔-13 评论-0 文章-2 trackbacks-0
栈的实现(链式结构)Alpha 1.0
1
/**/
/*
*
2
Stack(use linked structure to implement)
3
Version: 1.0
4
Member function as follow:
5
size()
6
push(T) // inset an elm
7
pop() // delete the last elm
8
empty() // if it is an empty list
9
print()
10
11
Use C++ template
12
*
*/
13
#include
<
iostream
>
14
#include
<
string
>
15
16
using
namespace
std;
17
#ifndef STACK_H
18
#define
STACK_H
19
20
template
<
typename T
>
21
struct
Node
22
{
23
T data;
24
Node
*
next;
25
}
;
26
27
template
<
typename T
>
28
class
Stack
29
{
30
public
:
31
Stack();
32
~
Stack();
33
bool
Empty()
const
{
return
top
->
next
==
NULL; }
34
int
Size()
const
{
return
size; }
35
void
Push(
const
T
&
);
36
void
Pop();
37
void
Print()
const
;
38
private
:
39
Node
<
T
>*
top;
40
int
size;
41
42
}
;
43
44
template
<
typename T
>
Stack
<
T
>
::Stack()
45
{
46
top
=
new
Node
<
T
>
;
47
top
->
next
=
NULL;
48
size
=
0
;
49
}
50
51
template
<
typename T
>
Stack
<
T
>
::
~
Stack()
52
{
53
assert(top
->
next
->
next
!=
NULL);
54
for
(
int
i
=
0
; i
<
size; i
++
)
55
{
56
Pop();
57
size
--
;
58
}
59
}
60
61
template
<
typename T
>
void
Stack
<
T
>
::Push(
const
T
&
one)
62
{
63
Node
<
T
>*
new_node
=
new
Node
<
T
>
;
64
new_node
->
data
=
one;
65
new_node
->
next
=
top;
66
top
=
new_node;
67
size
++
;
68
}
69
70
template
<
typename T
>
void
Stack
<
T
>
::Pop()
71
{
72
Node
<
T
>*
p
=
new
Node
<
T
>
;
73
p
=
top;
74
top
=
top
->
next;
75
delete p;
76
p
=
NULL;
77
size
--
;
78
}
79
80
template
<
typename T
>
void
Stack
<
T
>
::Print()
const
81
{
82
cout
<<
"
Reverse inputing
"
<<
endl;
83
Node
<
T
>*
p
=
new
Node
<
T
>
;
84
p
=
top;
85
for
(
int
i
=
0
; i
<
size; i
++
)
86
{
87
cout
<<
p
->
data
<<
"
"
;
88
p
=
p
->
next;
89
}
90
cout
<<
endl;
91
92
}
93
94
#endif
95
96
//Test Function
1
int
main()
2
{
3
using
namespace
std;
4
Stack
<
int
>
stack;
5
cout
<<
"
----------------Display the stack program-----------------------
"
<<
endl;
6
cout
<<
"
\n Initial the stack,please input the number of element to push stack
"
<<
endl;
7
cout
<<
"
number =
"
;
8
int
number;
9
cin
>>
number;
10
cout
<<
"
Secondly input the number in the following\n
"
<<
endl;
11
int
temp;
12
for
(
int
i
=
0
; i
<
number; i
++
)
13
{
14
cin
>>
temp;
15
stack.Push(temp);
16
}
17
cout
<<
"
You Input As Follow
"
<<
endl;
18
stack.Print();
19
cout
<<
"
Would you like to display the pop function
Yes or No
"
<<
endl;
20
string
answer;
21
cin
>>
answer;
22
if
( answer
==
"
yes
"
||
answer
==
"
YES
"
)
23
{
24
stack.Pop();
25
stack.Print();
26
}
27
cout
<<
"
-----------------------------------------------------------------
"
<<
endl;
28
system(
"
pause
"
);
29
return
0
;
30
31
}
32
posted on 2009-03-18 22:46
亦夏
阅读(238)
评论(0)
编辑
收藏
引用
所属分类:
DataStruct
只有注册用户
登录
后才能发表评论。
【推荐】100%开源!大型工业跨平台软件C++源码提供,建模,组态!
相关文章:
栈的实现(顺序结构)Alpha 2.0
二查查找树的实现(链式) Alpha1.0
队列的实现(链式结构) Alpha 1.0
队列的实现(数组结构) Alpha 1.0
栈的实现(链式结构)Alpha 1.0
栈的实现(顺序结构)Alpha 1.0
循环链表的实现(Alpha)
双向链表的实现(Alpha1.0 )
单向链表的实现(Alpha 1.0)
线性表的顺序表示和实现(静态数组方式)(Alpha1.0)
网站导航:
博客园
IT新闻
BlogJava
博问
Chat2DB
管理
<
2009年3月
>
日
一
二
三
四
五
六
22
23
24
25
26
27
28
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
1
2
3
4
常用链接
我的随笔
我的评论
我参与的随笔
留言簿
(1)
给我留言
查看公开留言
查看私人留言
随笔分类
(13)
ACM (2)
DataStruct(10)
TopCoder(1)
随笔档案
(13)
2009年5月 (1)
2009年4月 (3)
2009年3月 (5)
2009年2月 (4)
文章分类
(2)
ACM(1)
Alogrithm
C part of c++
C++0X
Datestruct
Game of c++
General(1)
Object-orient of c++
Others
Puzzle
STL
Template c++
Visual c++
文章档案
(2)
2009年2月 (1)
2009年1月 (1)
搜索
最新随笔
1. Search and DP
2. 栈的实现(顺序结构)Alpha 2.0
3. HowEasy
4. HDOJ_1010.Tempter of the Bone(DFS)
5. 二查查找树的实现(链式) Alpha1.0
6. 队列的实现(链式结构) Alpha 1.0
7. 队列的实现(数组结构) Alpha 1.0
8. 栈的实现(链式结构)Alpha 1.0
9. 栈的实现(顺序结构)Alpha 1.0
10. 循环链表的实现(Alpha)
最新评论
阅读排行榜
1. HDOJ_1010.Tempter of the Bone(DFS)(906)
2. 队列的实现(链式结构) Alpha 1.0(470)
3. HowEasy(438)
4. Search and DP(405)
5. 线性表的顺序表示和实现(静态数组方式)(Alpha1.0)(339)
评论排行榜
1. 线性表的顺序表示和实现(静态数组方式)(Alpha1.0)(0)
2. 单向链表的实现(Alpha 1.0)(0)
3. 双向链表的实现(Alpha1.0 )(0)
4. 循环链表的实现(Alpha)(0)
5. 栈的实现(顺序结构)Alpha 1.0(0)