diff --git a/LinkedList1.java b/LinkedList1.java new file mode 100644 index 0000000000000000000000000000000000000000..e48e1b1a4f5ac63c99eb916a980d9f13c6844c96 --- /dev/null +++ b/LinkedList1.java @@ -0,0 +1,96 @@ +public class LinkedList1 { +private Node head; + +public LinkedList1() { + head = null; + } + +public void addToFront(E item) { + Node node = new Node(item); + + if (this.head == null) { + this.head = node; + } else{ + Node temp = head; + this.head = node; + this.head.next = temp; + } + } + + +public void addToRear(E item) { + Node newNode = new Node(item); + if (this.head == null) { + this.head = newNode; + } else { + + Node temp = this.head; + while(temp.next != null){ + temp = temp.next; + } + temp.next = newNode; + } + } + +public void print() { + Node temp = this.head; + while(temp.next != null){ + System.out.print(temp.item + " -> "); + temp = temp.next; + } + System.out.println(temp.item); + + } + +public void deleteItems(E item) { + if (head != null) { + String headStr = (String) head.item; + if (headStr.equals(item)){ + head= head.next; + return; + } + Node preNode = head; + Node curNode = head.next; + while (curNode != null) { + //这里全当字符串处理 + String itemStr = (String) curNode.item; + if (itemStr.equals(item)) { + //内容相同进行删除 结束循环 + preNode.next= curNode.next; + break; + } + preNode=preNode.next; + curNode=preNode.next; + } + + } else { + System.out.println("链表为空,无法进行删除操作"); + } + } +public boolean findItem(E item) { + Node temp = head; + while (temp != null) { + //这里全当字符串处理 + String itemStr = (String) temp.item; + if (itemStr.equals(itemStr)) { + //内容相同节点存在结束循环 + return true; + } + temp = temp.next; + } + return false; + } + + +//计算链表长度数值 +public int size() { + int linkedListLength = 0; + Node temp = head; + while (temp != null) { + linkedListLength++; + temp = temp.next; + } + return linkedListLength; + } + } + diff --git a/LinkedList2.java b/LinkedList2.java new file mode 100644 index 0000000000000000000000000000000000000000..bbffb7a7695d33b22df33809d2ed5bc0455fed3d --- /dev/null +++ b/LinkedList2.java @@ -0,0 +1,97 @@ +public class LinkedList2 { + private Node head,tail; + public LinkedList2() { + head = null; + tail = null; + } + + public void addToFront(E item) { + Node node = new Node(item); + + if (this.head == null) { + this.head = node; + } else{ + Node temp = head; + this.head = node; + this.head.next = temp; + } + } + + + public void addToRear(E item) { + Node newNode = new Node(item); + if (this.head == null) { + this.head = newNode; + } else { + tail = newNode; + } + tail =newNode; + + } + + public void print() { + Node temp = this.head; + while(temp.next != null){ + System.out.print(temp.item + " -> "); + temp = temp.next; + } + System.out.println(temp.item); + + } + + public void deleteItems(E item) { + if (head != null) { + String headStr = (String) head.item; + if (headStr.equals(item)){ + head= head.next; + return; + } + Node preNode = head; + Node curNode = head.next; + while (curNode != null) { + //这里全当字符串处理 + String itemStr = (String) curNode.item; + if (itemStr.equals(item)) { + if (curNode.item==null) + tail=preNode; + //内容相同进行删除 结束循环 + preNode.next= curNode.next; + break; + } + preNode=preNode.next; + curNode=preNode.next; + } + + } else { + System.out.println("链表为空,无法进行删除操作"); + } + } + public boolean findItem(E item) { + Node temp = head; + while (temp != null) { + //这里全当字符串处理 + String itemStr = (String) temp.item; + if (itemStr.equals(itemStr)) { + //内容相同节点存在结束循环 + return true; + } + temp = temp.next; + } + return false; + } + + + //计算链表长度数值 + public int size() { + int linkedListLength = 0; + Node temp = head; + while (temp != null) { + linkedListLength++; + temp = temp.next; + } + return linkedListLength; + } + + +} + diff --git a/Main.java b/Main.java index 057428817fa315cf419ab3ea8cc74615dbf94f39..c198833657fc0d1647bb2d8f353fba0a9b60bfd5 100644 --- a/Main.java +++ b/Main.java @@ -1,10 +1,35 @@ +import java.util.logging.XMLFormatter; + +import static java.lang.System.*; + class Main { public static void main(String[] args) { - LinkedList ll = new LinkedList(); - ll.addToFront(1); - ll.addToFront(2); - ll.addToRear(3); - ll.print(); - + LinkedList2 linkedList2 = new LinkedList2(); + linkedList2.addToFront("1"); + linkedList2.addToFront("2"); + linkedList2.addToRear("3"); + linkedList2.addToRear("4"); + boolean itemExist2=linkedList2.findItem("3"); + System.out.println(itemExist2 ? "节点存在" : "节点不存在"); + + System.out.println("链表长度为" + linkedList2.size()); + + linkedList2.deleteItems("3"); + linkedList2.deleteItems("4"); + linkedList2.print(); + LinkedList1LinkedList1 = new LinkedList1(); + LinkedList1.addToFront("1"); + LinkedList1.addToFront("2"); + LinkedList1.addToFront("25"); + LinkedList1.addToFront("23"); + LinkedList1.addToRear("3"); + + boolean itemExist1=LinkedList1.findItem("3"); + System.out.println(itemExist1 ? "节点存在" : "节点不存在"); + System.out.println("链表长度为" + LinkedList1.size()); + + LinkedList1.deleteItems("2"); + LinkedList1.print(); + } } \ No newline at end of file