原题:设计一个算法,判断一个算术表达式中的括号是否配对。算术表达式保存在带头结点的单循环链表中,每个结点有两个域:ch和link,其中ch域为字符类型。
其实是考察数据结构的题目,自己用C语言写出来了,现在请牛人们用T-SQL写出来。
C语言的算法与程序,在下面的地址里面:
http://blog.csdn.net/HEROWANG/archive/2009/06/20/4285326.aspx
其实是考察数据结构的题目,自己用C语言写出来了,现在请牛人们用T-SQL写出来。
C语言的算法与程序,在下面的地址里面:
http://blog.csdn.net/HEROWANG/archive/2009/06/20/4285326.aspx
set @str='(()1+)+()(+)'declare @ismatch int
set @ismatch=1
if (len(replace(@str,'(',''))<>len(replace(@str,')',''))) --左右括号个数不相等
set @ismatch=0
else
begin
declare @i int,@lefts int,@rights int
select @i=1,@lefts=0,@rights=0
while @i<=len(@str)
begin
if(substring(@str,@i,1)='(')
set @lefts=@lefts+1
else if(substring(@str,@i,1)=')')
set @rights=@rights+1 if @rights>@lefts --右括号不能大于左括号的个数
begin
set @ismatch=0
break
end
set @i=@i+1
end
endif @ismatch=0
print N'不匹配'
else
print N'匹配'
结果及判断条件:
1、匹配:计数器为0,字符串读取结束
2、(不匹配:有多余的(导致不匹配,计数器不为0
3、)不匹配,有多余的)导致不匹配,计数器为0,但是字符串中遇到)。现在增加一点难度,用T-SQL模拟一下链表与栈。
From tabel1