判断括号是否配对完整.
class Node<T> { public T Item { get; set; } public Node<T> Next { get; set; } }
class Stack3<T>
{
private Node<T> _first;
private int _n;
public int Count()
{
return _n;
}
public bool IsEmply()
{
return _first == null;
}
public void Push(T t)
{
Node<T> old = _first;
_first = new Node<T>(){Item = t, Next = old};
_n++;
}
public T Pop()
{
T t = _first.Item;
_first = _first.Next;
_n--;
return t;
}
}
class Program
{
private static Stack3<char> f = new Stack3<char>();
static void Main(string[] args)
{
string str = "({[]}{}())";
if (str.Length % 2 != 0)
{
Console.WriteLine("不对等");
return;
}
for (int i = 0; i < str.Length; i++)
{
if (str[i] == '(' || str[i] == '{' || str[i] == '[')
{
f.Push(str[i]);
}
else
{
if (!IsA(str[i]))
{
Console.WriteLine("不对等");
return;
}
}
}
Console.WriteLine("对等");
}
private static bool IsA(char ca)
{
bool flag = false;
switch (ca)
{
case ')':
flag = f.Pop() == '(';
break;
case '}':
flag = f.Pop() == '{';
break;
case ']':
flag = f.Pop() == '[';
break;
default:
break;
}
return flag;
}
}