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)
括号匹配问题
void PrintMatchedPairs(char
*
expression)
//////////////////////////////////////////////////////////
括号匹配算法
{
linkedStack s;
int
j,length
=
strlen(expression);
for
(
int
i
=
1
;i
<=
length;i
++
)
{
if
(expression[i
-
1
]
==
'
(') s.Push(i);
else
if
(expression[i
-
1
]
==
'
)')
{
if
(s.Pop(j)
==
true
)
cout
<<
j
<<
"
与
"
<<
i
<<
"
匹配
"
<<
endl;
else
cout
<<
"
没有与第
"
<<
i
<<
"
个括号匹配的左括号!
"
<<
endl;
}
}
while
(s.isEmpty()
==
false
)
{
s.Pop(j);
cout
<<
"
没有与第
"
<<
j
<<
"
个左括号相匹配的右括号!
"
<<
endl;
}
}
别人写的代码
char
stack[
200
];
/*
栈空间
*/
int
size
=
0
;
/*
入栈个数
*/
int
PrintMatchedPairs(
char
*
expression)
{
int
i;
for
(i
=
0
;i
<
strlen(expression);i
++
)
{
char
c
=
expression[i];
if
(c
==
'
(
'
||
c
==
'
[
'
||
c
==
'
{
'
)
/*
遇到左括号
*/
{
stack[size]
=
c;
/*
stack push
*/
size
++
;
}
else
if
(c
==
'
)
'
)
/*
遇到右括号
*/
{
if
(size
==
0
||
stack[size
-
1
]
!=
'
(
'
)
/*
检查 stack 最后一个是否是 '('
*/
{
size
=
0
;
return
0
;
}
else
size
--
;
/*
stack pop
*/
}
else
if
(c
==
'
]
'
)
{
if
(size
==
0
||
stack[size
-
1
]
!=
'
[
'
)
/*
检查 stack 最后一个是否是 '['
*/
{
size
=
0
;
return
0
;
}
else
size
--
;
/*
stack pop
*/
}
else
if
(c
==
'
}
'
)
{
if
(size
==
0
||
stack[size
-
1
]
!=
'
{
'
)
/*
检查 stack 最后一个是否是 '{'
*/
{
size
=
0
;
return
0
;
}
else
size
--
;
/*
stack pop
*/
}
}
if
(size
==
0
)
return
1
;
else
{
size
=
0
;
return
0
;
}
}
posted on 2007-10-14 17:01
heidaizx
阅读(975)
评论(0)
编辑
收藏
引用
所属分类:
数据结构
只有注册用户
登录
后才能发表评论。
【推荐】100%开源!大型工业跨平台软件C++源码提供,建模,组态!
相关文章:
闭散列法组织的散列表
二叉树的简单操作
Josephus的链表实现
队列实现杨辉三角形算法(非金字塔形)待改进
循环队列的链表表示
循环队列的数组表示函数的实现
栈实现fib算法
汉诺塔问题
括号匹配问题
栈的简单实现
网站导航:
博客园
IT新闻
BlogJava
知识库
博问
管理