My road to c++
C++博客
首页
新随笔
联系
聚合
管理
随笔-13 评论-0 文章-2 trackbacks-0
队列的实现(链式结构) Alpha 1.0
1
/**/
/*
*
2
Queue (Liked structure)
3
Version: 1.0
4
Member function as follow:
5
size()
6
front() // the head element
7
back() // the rear element
8
push(T) // inset an elm
9
pop() // delete the last elm
10
empty() // if it is an empty list
11
print()
12
13
Use C++ template
14
@author fleap
15
data: 2009/03/20
16
*
*/
17
18
//
queue.h
19
#ifndef QUEUE_H
20
#define
QUEUE_H
21
22
#include
<
iostream
>
23
#include
<
string
>
24
25
template
<
typename T
>
26
struct
Node
27
{
28
T data;
29
Node
*
link;
30
Node():link(NULL)
{}
31
}
;
32
33
template
<
typename T
>
34
class
queue
35
{
36
public
:
37
queue();
38
~
queue();
39
int
Size()
const
{
return
size; }
40
T front()
const
{
return
head
->
link
->
data; }
41
T back()
const
{
return
rear
->
data; }
42
bool
empty()
const
{
return
front
==
rear; }
43
void
push(
const
T
&
);
44
void
pop();
45
void
print()
const
;
46
private
:
47
Node
<
T
>*
head;
48
Node
<
T
>*
rear;
49
int
size;
50
}
;
51
52
#endif
53
54
//
queue.cpp
55
//
#include"queue.h"
56
57
using
namespace
std;
58
59
template
<
typename T
>
queue
<
T
>
::queue()
60
{
61
head
=
new
Node
<
T
>
;
62
rear
=
head;
63
size
=
0
;
64
}
65
66
template
<
typename T
>
queue
<
T
>
::
~
queue()
67
{
68
while
(size
--
)
69
pop();
70
}
71
72
template
<
typename T
>
void
queue
<
T
>
::push(
const
T
&
one)
73
{
74
Node
<
T
>*
node
=
new
Node
<
T
>
;
75
node
->
data
=
one;
76
Node
<
T
>*
p
=
new
Node
<
T
>
;
77
p
=
head;
78
while
(p
!=
rear)
79
p
=
p
->
link;
80
p
->
link
=
node;
81
rear
=
node;
82
size
++
;
83
}
84
85
template
<
typename T
>
void
queue
<
T
>
::pop()
86
{
87
Node
<
T
>*
p
=
new
Node
<
T
>
;
88
p
=
head;
89
while
( p
->
link
!=
rear )
90
p
=
p
->
link;
91
rear
=
p;
92
p
=
p
->
link;
93
delete p;
94
rear
->
link
=
NULL;
95
size
--
;
96
}
97
98
template
<
typename T
>
void
queue
<
T
>
::print()
const
99
{
100
Node
<
T
>*
p
=
new
Node
<
T
>
;
101
p
=
head
->
link;
102
while
(p
!=
NULL)
103
{
104
cout
<<
p
->
data
<<
"
"
;
105
p
=
p
->
link;
106
}
107
cout
<<
endl;
108
}
// Test function
int
main()
{
using
namespace
std;
queue
<
int
>
que;
cout
<<
"
----------------Display the queue program-----------------------
"
<<
endl;
cout
<<
"
\nInitial the queue,please input the number of element to push stack
"
<<
endl;
cout
<<
"
number =
"
;
int
number;
cin
>>
number;
cout
<<
"
Secondly input the number in the following\n
"
<<
endl;
int
temp;
for
(
int
i
=
0
; i
<
number; i
++
)
{
cin
>>
temp;
que.push(temp);
}
cout
<<
"
You Input As Follow
"
<<
endl;
que.print();
cout
<<
"
head:
"
<<
que.front()
<<
"
rear:
"
<<
que.back()
<<
endl;
cout
<<
"
Would you like to display the pop function
Yes or No
"
<<
endl;
string
answer;
cin
>>
answer;
if
( answer
==
"
yes
"
||
answer
==
"
YES
"
)
{
que.pop();
que.print();
cout
<<
"
head:
"
<<
que.front()
<<
"
rear:
"
<<
que.back()
<<
endl;
}
cout
<<
"
-----------------------------------------------------------------
"
<<
endl;
system(
"
pause
"
);
return
0
;
}
posted on 2009-03-20 02:33
亦夏
阅读(462)
评论(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
知识库
博问
管理
<
2009年4月
>
日
一
二
三
四
五
六
29
30
31
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
1
2
3
4
5
6
7
8
9
常用链接
我的随笔
我的评论
我参与的随笔
留言簿
(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(462)
3. HowEasy(435)
4. Search and DP(397)
5. 线性表的顺序表示和实现(静态数组方式)(Alpha1.0)(338)
评论排行榜
1. 线性表的顺序表示和实现(静态数组方式)(Alpha1.0)(0)
2. 单向链表的实现(Alpha 1.0)(0)
3. 双向链表的实现(Alpha1.0 )(0)
4. 循环链表的实现(Alpha)(0)
5. 栈的实现(顺序结构)Alpha 1.0(0)