blacktusk--期待收获的季节
导航
C++博客
首页
新随笔
联系
聚合
管理
<
2007年9月
>
日
一
二
三
四
五
六
26
27
28
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
统计
随笔 - 23
文章 - 63
评论 - 61
引用 - 0
常用链接
我的随笔
我的评论
我参与的随笔
留言簿
(6)
给我留言
查看公开留言
查看私人留言
随笔档案
2008年5月 (2)
2008年4月 (1)
2008年3月 (1)
2008年2月 (1)
2007年12月 (2)
2007年11月 (3)
2007年10月 (7)
2007年9月 (6)
文章分类
ACM(1)
(rss)
c++ premier(第四版中文版)(1)
(rss)
FTP搜索(3)
(rss)
linux使用解决指南(20)
(rss)
数据结构(10)
(rss)
算法导论(2)
(rss)
杂谈(1)
(rss)
文章档案
2008年7月 (1)
2008年5月 (3)
2008年3月 (4)
2008年2月 (3)
2007年12月 (4)
2007年11月 (5)
2007年10月 (20)
2007年9月 (3)
2007年6月 (15)
2007年5月 (5)
收藏夹
.net(2)
(rss)
acm(2)
(rss)
c++(3)
(rss)
值得我学习的c++博客
&豪
ACM
EEXPRESS 的ubuntu blog
lee7
vectordu
陈陈的c++博客
枫之羽
极风炫影
梁兄
农夫三拳
秦歌的c++博客
石头的ubuntu blog
未知
小果子
忆熵
重剑无峰,大巧不工
搜索
最新评论
1. re: gdb和g++的简单使用
fuck the prog```
--123123
2. re: 杭州电子科技大学acm1002:大数相加
写的灰常优美啊~
--露露护卫队
3. re: 乒乓球比赛问题:两个乒乓球队进行比赛,各出3人,甲队为A,B,C三人,乙队为x,y,z三人,列出所有的对战情况
错误的答案阿
--徐娟
4. re: gdb和g++的简单使用
感觉帖主是写JAVA出身的
--已阅
5. re: gdb和g++的简单使用[未登录]
评论内容较长,点击标题查看
--菜鸟
阅读排行榜
1. 大数相乘的速算思路(995)
2. 终于有了小项目(809)
3. 打乒乓球有感(740)
4. 终于搞定了unbuntu的基本安装(674)
5. 开始看算法导论(599)
评论排行榜
1. 彻底放弃了windows(11)
2. 国庆10.1七天计划(10)
3. 终于有了小项目(5)
4. 强敌出现(4)
5. 开始看算法导论(4)
栈的简单实现
#include
<
iostream
>
#include
<
assert.h
>
using namespace std;
struct linkNode
{
int
data;
linkNode
*
link;
linkNode(linkNode
*
pre
=
NULL
):link(pre){}
linkNode(
int
d,linkNode
*
pre
=
NULL
):link(pre),data(d){}
};
class linkedStack
{
public
:
linkedStack():top(
NULL
){}
~linkedStack(){makeEmpty();};
void Push(
const
int
&
x);
bool Pop(
int
&
x);
int
getTop(
int
&
x)
const
;
bool
isEmpty
()
const
{return (top
==
NULL
)?
true
:
false
;}
int
getSize()
const
;
void makeEmpty();
void output();
private
:
linkNode
*
top;
};
void linkedStack::makeEmpty()
{
linkNode
*
p;
while
(top!
=
NULL
)
{
p
=
top;
top
=
top
->
link;
delete p;
}
}
void linkedStack::Push(
const
int
&
x)
{
top
=
new
linkNode(x,top);
assert(top!
=
NULL
);
}
bool linkedStack::Pop(
int
&
x)
{
if
(
isEmpty
()
==
true
) return
false
;
linkNode
*
p
=
top;
top
=
top
->
link;
x
=
p
->
data;
delete p;
return
true
;
}
int
linkedStack::getTop(
int
&
x)
const
{
if
(
isEmpty
()
==
true
) return
false
;
x
=
top
->
data;
return x;
}
int
linkedStack::getSize()
const
{
linkNode
*
p
=
top;
int
i
=
0
;
while
(p!
=
NULL
)
{
p
=
p
->
link;
i
++
;
}
return i;
}
void linkedStack::output()
{
linkNode
*
p
=
top;
while
(p!
=
NULL
)
{
cout
<<
p
->
data
<<
endl;
p
=
p
->
link;
}
}
int
menu()
{
int
choice;
cout
<<
"
*************链式栈的基本操作************
"
<<
endl
<<
endl;
cout
<<
"
插入结点,请按1
"
<<
endl;
cout
<<
"
删除结点,请按2
"
<<
endl;
cout
<<
"
返回栈顶元素的值,请按3
"
<<
endl;
cout
<<
"
求栈的元素个数,请按4
"
<<
endl;
cout
<<
"
清空栈的元素,请按5
"
<<
endl;
cout
<<
"
打印栈的元素,请按6
"
<<
endl;
cout
<<
"
退出,请按7
"
<<
endl
<<
endl;
cout
<<
"
*****************************************
"
<<
endl
<<
endl;
cout
<<
"
请选择:
"
;
cin
>>
choice;
return choice;
}
int
main()
{
linkedStack obj;
bool
exit
=
false
;
while
(
true
)
{
int
choice
=
menu();
switch(choice)
{
case
1
:
int
s;
cout
<<
"
请输入要推入元素的数据域:
"
;
cin
>>
s;
obj.Push(s);break;
case
2
:
int
x;
cout
<<
"
请任意输入一个数:
"
;
cin
>>
x;
cout
<<
obj.Pop(x)
<<
endl;break;
case
3
:
int
y;
cout
<<
"
请任意输入一个数,用做返回栈顶元素的容器:
"
;
cin
>>
y;
cout
<<
obj.getTop(y)
<<
endl;break;
case
4
:
cout
<<
obj.getSize()
<<
endl;break;
case
5
:
obj.makeEmpty();break;
case
6
:
obj.output();break;
case
7
:
exit
=
true
;break;
}
if
(
exit
==
true
)
break;
}
return
0
;
}
posted on 2007-10-14 15:17
heidaizx
阅读(257)
评论(0)
编辑
收藏
引用
所属分类:
数据结构
只有注册用户
登录
后才能发表评论。
【推荐】100%开源!大型工业跨平台软件C++源码提供,建模,组态!
相关文章:
闭散列法组织的散列表
二叉树的简单操作
Josephus的链表实现
队列实现杨辉三角形算法(非金字塔形)待改进
循环队列的链表表示
循环队列的数组表示函数的实现
栈实现fib算法
汉诺塔问题
括号匹配问题
栈的简单实现
网站导航:
博客园
IT新闻
BlogJava
知识库
博问
管理