上数据结构老师留了个作业~!
实现C编辑器 检查括号是否成对。
严蔚敏老师书上的,今天星期六,这在留个印。我现在去想想,欢迎大家一起讨论。
问题点数:6、回复次数:7Top
1 楼metaphor(真流星蝴蝶剑)回复于 2006-03-12 15:19:34 得分 0
用一个计数器count,
从左到右扫描字符串
遇'(',加1
遇')',减1,若count<0,则不配对
扫描完毕若count!=0,则不配对
否则配对Top
2 楼WYlslrt(WY.lslrt(http://www.wyos.net))回复于 2006-03-12 16:23:30 得分 0
用堆栈,“(”入栈,“)”堆栈出栈,在遇到“;”时,堆栈不为空,报错Top
3 楼zara(Kyrie eleison)回复于 2006-03-12 17:38:49 得分 0
可能要考虑字符串的定义, 注释部分的内容Top
4 楼wjd7623054(千古风流)回复于 2006-03-12 17:53:21 得分 0
用堆栈,很容易的,想想Top
5 楼cnromp(星龙)回复于 2006-03-12 18:37:17 得分 0
太简单了 好晕啊!Top
6 楼foxdeng(江洋大刀)回复于 2006-03-13 22:28:26 得分 0
堆栈都不用,看看:
int count=0;
........
while(*P)
{
if(*p=='(')
count++;
if(*p==')')
count--;
p++;
}
.......
if(count)
.....
Top
7 楼Yshadow(Yshadow)回复于 2006-03-22 14:00:40 得分 6
采用堆栈好,因为堆栈可以知道每一层里是否配对,
堆栈可以很好便运行进行
char stack[10]
match_if_or_not(char)
{
int i;
char p;
p=getchar();
for(i=0;i<10;i++)
{
if(p="(")
stack[i]=p; 存起来,把左号都存起来
elseif(p="[")
stack[i]=p; 存起来,把左号都存起来
elseif(p="{")
stack[i]=p; 存起来,把左号都存起来
elseif(p=")")
search("("); 搜索第一个与")"接近的与它匹配.成一对
elseif(p="]")
search("["); 搜索第一个与"]"接近的与它匹配.成一对
elseif(p="}")
search("{"); 搜索第一个与")"接近的与它匹配.成一对
else
error;
}
Top




