LinkedList集合

/*
* 本类用来演示LinkList
* 它也是List接口的实现类,所以和ArrayList一样,具有有序可重复的特点
* 不同在于,LinkedList底层是现实双向链表,增删效率高,查询效率低
*
* */

import java.util.LinkedList;
import java.util.Scanner;



/*
* 面试题:括号匹配
* 请用户输入任意()[]{},通过程序判定括号是否能配对
*
* 配对要求
* OK[{}] {[] () {}}
* NO:[)](
*
* */
public class LinkListDemo {
public static void main(String[] args) {
// 详细方法看JDK11.0APILinkedList方法

/*

E - 此集合中保留的元素类型 void 任意类型
* E peek() 检索但不删除此列表的头部(第一个元素)。
* E pop() 弹出此列表所代表的堆栈中的元素。
* void push() 将元素推送到此列表所表示的堆栈上。
*
* */
LinkedList<Character>list=new LinkedList<>();
Scanner scanner=new Scanner(System.in);
System.out.println("请输入括号");
String input=scanner.nextLine();
char[] charArray=input.toCharArray();
list.add(charArray[0]);
for (int i=1;i<charArray.length;i++){
if (list.isEmpty()){
list.push(charArray[i]);
continue;
}
if (list.peek()=='('&&charArray[i]==')'||list.peek()=='['&&charArray[i]==']'
||list.peek()=='{'&&charArray[i]=='}'){
list.pop();
}else {
list.push(charArray[i]);
}

}
if (list.isEmpty()){
System.out.println("匹配成功");
}else {
System.out.println("匹配不成");
}
}
}
posted @ 2022-05-27 10:41  Miraitowaa  阅读(58)  评论(0)    收藏  举报