链表问题
本人正在学数据结构的链表,请教一下如何用链表来进行括号匹配,能否举个代码例子。还有一个练习就是如何用链表先通过前序方式建立二叉树,再通过层次遍历二叉树,求代码。谢了!!
关于括号匹配,我已经用堆栈写出来了,不过还是有点小错误,我把代码发上,大家帮忙看一下。还有第二个练习题,也可以有堆栈做,我暂时还没写出来,希望高手发个代码上来,帮我参考参考。。。
import java.util.*;
class Node
{
Object data;
Node next;
public Node(Object obj,Node next)
{
data=obj;
this.next=next;
}
}
class LinStack
{
Node head;
int size;
public void LinStack()
{
head=null;
size=0;
}
public void push(Object obj)
{
head=new Node(obj,head);
size++;
}
public Object pop() throws Exception
{
Object obj=head.data;
head=head.next;
size--;
return obj;
}
public boolean notEmpty()
{
return head != null;
}
public Object getTop()
{
return head.data;
}
}
public class StackTest
{
public static void main(String args[])throws Exception
{
String str;
LinStack stack=new LinStack();
Scanner reader =new Scanner(System.in);
System.out.println("请输入括号:");
str=reader.nextLine();
char ch;
for(int i=0;i<str.length();i++)
{
ch=str.charAt(i);
if(ch=='('||ch=='['||ch=='{')
stack.push(ch);
else if(ch==')'&& stack.notEmpty()&& stack.getTop().equals('('))
stack.pop();
else if(ch==')'&& stack.notEmpty()&& ! stack.getTop().equals('('))
{
System.out.println("左右括号不匹配");
return;
}
else if(ch==']'&& stack.notEmpty()&& stack.getTop().equals('['))
stack.pop();
else if(ch==']'&& stack.notEmpty()&& ! stack.getTop().equals('['))
{
System.out.println("左右括号不匹配");
return;
}
else if(ch=='}'&& stack.notEmpty()&& stack.getTop().equals('{'))
stack.pop();
else if(ch=='}'&& stack.notEmpty()&& ! stack.getTop().equals('{'))
{
System.out.println("左右括号不匹配");
return;
}
else if(ch==')'||ch==']'||ch=='}'&& ! stack.notEmpty())
{
System.out.println("右括号多于左括号!");
return;
}
}
if(stack.notEmpty())
System.out.println("左括号多于右括号!");
else
System.out.println("左右括号匹配");
}
}