package com.csmzxy.rjxy.j2se.array_collection_04;
public class LinkedListTest {
private static int size;
private Node header = null;// 表示为头结点
public LinkedListTest() {
header = new Node(null, null);
size = 0;
}
public boolean addhead(Object o) {
if (header != null) {
Node node = new Node(o, null);
node.setNext(header.getNext());
header.setNext(node);
size++;
return true;
}
return false;
}
public void add(Object o) {
Node node = new Node(o, null);
Node temp = header;
while (temp.getNext() != null) {
temp = temp.getNext();
}
temp.setNext(node);
size++;
}
// 打印鏈錶里面所有的节点
public void print() {
Node temp = header;
while (temp.getNext() != null) {
System.out.println("元素:" + temp.getNext().value);
temp = temp.getNext();
}
}
// 1. 在此列表中指定的位置插入指定的元素
public boolean add(int index, Object o) {
Node newNode = new Node(o, null);
if (index > 0 && index <= size) {
Node temp = header;
for (int i = 1; i < index; i++) {
temp = temp.getNext();
}
newNode.setNext(temp.getNext());
temp.setNext(newNode);
size++;
return true;
} else {
return false;
}
}
// 2. 将指定元素插入此列表的开头。
public void addFirst(Object o) {
// 首先知道的是header节点为1,指定元素插入到0位置
Node newNode = new Node(o, null);
Node temp = header;
newNode.setNext(temp.getNext());
temp.setNext(newNode);
size++;
}
// 3. 将指定元素添加到此列表的结尾
public void addLast(Object o) {
Node newNode = new Node(o, null);
Node temp = header;
for (int i = 1; i <= size; i++) {
temp = temp.getNext();
if (temp.getNext() == null) {
temp.setNext(newNode);
}
}
size++;
}
// 4. 从此列表中移除所有元素
public void clear() {
int j = size;
Node temp = header;
header = null;
for (int i = 1; i <= j; i++) {
temp = temp.getNext();
temp.setValue(null);
System.out.println(temp.getValue());
size--;
}
}
// 5. 返回此列表中指定位置处的元素
private Node get(int index) {
Node temp = header;
if (index <= 0 || index > size) {
throw new IndexOutOfBoundsException("Index:" + index + ",Size:"
+ size);
} else {
// 遍歷所有的節點元素把最後一個節點返回
for (int i = 1; i <= index; i++) {
temp = temp.getNext();
}
return temp;
}
}
// 6. 返回此列表的第一个元素
public Object getFirst(){
Node temp=header;
temp=temp.getNext();
return temp.getValue();
}
// 7. 返回此列表的最后一个元素
public Object getLast() {
Node temp=header;
while (size>0) {
temp=temp.getNext();
size--;
}
return temp.getValue();
}
// 8. 获取并移除此列表的头(第一个元素)
public Object remove() {
Node temp=header;
temp=temp.getNext();
temp.setValue(null);
size--;
return temp.getValue();
}
// 9. 移除此列表中指定位置处的元素
public void remove(int index) {
get(index).setValue(null);
size--;
}
// 10. 移除并返回此列表的最后一个元素
// 11. 返回此列表的元素数
public int size() {
return size;
}
public static void main(String[] args) {
LinkedListTest linkedListTest = new LinkedListTest();
linkedListTest.addhead("指定到header位置添加节点");
linkedListTest.add("444");
linkedListTest.add("222");
linkedListTest.add(2, "指定到2位置添加节点");
linkedListTest.add(3, "指定到3位置添加节点");
linkedListTest.add(5, "指定到5位置添加节点");
// 1. 在此列表中指定的位置插入指定的元素
// 2. 将指定元素插入此列表的开头
linkedListTest.addFirst("addFirst");
linkedListTest.remove(3);
//System.out.println("返回此列表的第一个元素:"+linkedListTest.getFirst());
//System.out.println("返回此列表的最后一个元素:"+linkedListTest.getLast());
//linkedListTest.addLast("addLast");
linkedListTest.print();
System.out.println("链表长度:" + linkedListTest.size());
//linkedListTest.clear();
//System.out.println("链表长度:" + linkedListTest.size());
// System.out.println("索引5的位置得到:" + linkedListTest.get(5).getValue());
}
}
java中的LinkedList
最新推荐文章于 2024-10-15 17:49:59 发布