Linkedlist,双向链表,优点,增加删除,用时间很短,但是因为没有索引,对索引的操作,比较麻烦,只能循环遍历,但是每次循环的时候,都会先判断一下,这个索引位于链表的前部分还是后部分,每次都会遍历链表的一半 ,而不是全部遍历。
构造方法
构造方法 | |
---|
LinkedList() | 构造一个空列表。 |
LinkedList(Collection<? extends E> c) ) | 构造一个包含指定 collection 中的元素的列表,这些元素按其 collection 的迭代器返回的顺序排列。 |
package first_package;
import java.util.*;
public class test_linklist {
public static void main(String[] args){
LinkedList<String> Lits = new LinkedList<String>();
Lits.add("ccc");
Lits.add("bbb");
Lits.add("aaa");
System.out.println("Linked list : " + Lits);
for (String str: Lits) {
System.out.println(str);
}
LinkedList<String> x = new LinkedList(Lits);
System.out.println("Linked list : " + x);
for (String str: x) {
System.out.println(str);
}
}
方法摘要
返回值 | 函数 | 作用 |
---|
boolean | add(E e) | 将指定元素添加到此列表的结尾。 |
void | add(int index, E element) | 在此列表中指定的位置插入指定的元素。 |
boolean | addAll(Collection<? extends E> c) | 添加指定 collection 中的所有元素到此列表的结尾,顺序是指定 collection 的迭代器返回这些元素的顺序。 |
boolean | addAll(int index, Collection<? extends E> c) | 将指定 collection 中的所有元素从指定位置开始插入此列表。 |
void | addFirst(E e) | 将指定元素插入此列表的开头。 |
void | addLast(E e) | 将指定元素添加到此列表的结尾。 |
void | clear() | 从此列表中移除所有元素。 |
object | clone() | 返回此 LinkedList 的浅表副本。 |
boolean | contains(Object o) | 如果此列表包含指定元素,则返回 true。 |
Iterator | descendingIterator() | 返回以逆向顺序在此双端队列的元素上进行迭代的迭代器。 |
package first_package;
import java.util.*;
public class test_linklist {
public static void main(String[] args){
LinkedList<String> Lits = new LinkedList<String>();
Lits.add("ccc");
Lits.add("bbb");
Lits.add("aaa");
Lits.add(2,"ddd");
System.out.println("Linked List Elemet"+Lits);
LinkedList<String> test = new LinkedList();
test.add("eee");
test.addFirst("fff");
test.addLast("ggg");
System.out.println("test Linked List Elemet"+test);
Lits.addAll(test);
System.out.println("new Lits Linked List Elemet"+Lits);
Lits.peek();
System.out.println("peek Lits Linked List Elemet"+Lits);
Lits.poll();
System.out.println("poll Lits Linked List Elemet"+Lits);
}
}
实战例题
package first_package;
import java.util.*;
public class test_linklist {
public static void main(String[] args){
Scanner in = new Scanner(System.in);
int n = in.nextInt();
int m = in.nextInt();
LinkedList<Integer> l = new LinkedList<Integer>();
for(int i = 1;i<n+1;i++){
l.add(i);
}
int c,E1,E2,index1,index2,E;
for(int j =0;j<m;j++){
c = in.nextInt();
if (c==1){
E1 = in.nextInt();
E2= in.nextInt();
index1 = l.indexOf(E1);
index2 = l.indexOf(E2);
l.add(index2,E1);
if(index1<index2){
l.remove(index1);
}
else{
l.remove(index1+1);
}
}
else if(c==2){
E1 = in.nextInt();
E2= in.nextInt();
index1 = l.indexOf(E1);
index2 = l.indexOf(E2);
l.add(index2+1,E1);
if(index1<index2){
l.remove(index1);
}
else{
l.remove(index1+1);
}
}
else if(c==3){
E1 = in.nextInt();
E2= in.nextInt();
index1 = l.indexOf(E1);
index2 = l.indexOf(E2);
l.add(index1,E2);
l.remove(index1+1);
l.add(index2,E1);
l.remove(index2+1);
}
else{
LinkedList<Integer> r = new LinkedList<Integer>();
for(int i=0;i<l.size();i++){
E = l.get(l.size()-i-1);
r.add(E);
}
l =r;
}
}
int sum=0;
int sum_g =0;
for(int i =0;i<l.size();i++){
sum += l.get(i);
if(i % 2==0){
sum_g += l.get(i);
}
}
if (l.size() %2==0){
System.out.print(sum_g);
}
else{
System.out.print(sum-sum_g);
}
}
}