From 0e479ba686619922feeefefca6a10c874a9993b5 Mon Sep 17 00:00:00 2001 From: xie <18950888253@qq.com> Date: Wed, 28 Oct 2020 09:22:39 +0800 Subject: [PATCH 1/2] init --- Main.java | 2 ++ 1 file changed, 2 insertions(+) diff --git a/Main.java b/Main.java index 0574288..ee13a50 100644 --- a/Main.java +++ b/Main.java @@ -5,6 +5,8 @@ class Main { ll.addToFront(2); ll.addToRear(3); ll.print(); + + System.out.println("sjakhfk"); } } \ No newline at end of file -- Gitee From 9d3e1cff8d801c2e20dd56cef41fa39345937597 Mon Sep 17 00:00:00 2001 From: xie <18950888253@qq.com> Date: Tue, 3 Nov 2020 23:54:22 +0800 Subject: [PATCH 2/2] =?UTF-8?q?=E6=8F=90=E4=BA=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Main.java | 58 +++++++++++++++++++++- t3/Node.java | 11 +++++ t3/ThreeLinkedList.java | 86 ++++++++++++++++++++++++++++++++ ti1/Node.java | 10 ++++ ti1/OneLinkedList.java | 102 ++++++++++++++++++++++++++++++++++++++ ti2/Node.java | 10 ++++ ti2/TowLinkedList.java | 107 ++++++++++++++++++++++++++++++++++++++++ 7 files changed, 382 insertions(+), 2 deletions(-) create mode 100644 t3/Node.java create mode 100644 t3/ThreeLinkedList.java create mode 100644 ti1/Node.java create mode 100644 ti1/OneLinkedList.java create mode 100644 ti2/Node.java create mode 100644 ti2/TowLinkedList.java diff --git a/Main.java b/Main.java index ee13a50..75843d5 100644 --- a/Main.java +++ b/Main.java @@ -1,3 +1,7 @@ +import t3.ThreeLinkedList; +import ti1.OneLinkedList; +import ti2.TowLinkedList; + class Main { public static void main(String[] args) { LinkedList ll = new LinkedList(); @@ -6,7 +10,57 @@ class Main { ll.addToRear(3); ll.print(); - System.out.println("sjakhfk"); - + System.out.println("1.题目"); + OneLinkedList oneLinkedList = new OneLinkedList(); + oneLinkedList.printItems(); + oneLinkedList.addToFront("1"); + oneLinkedList.addToFront("2"); + oneLinkedList.printItems(); + oneLinkedList.addToRear("3"); + oneLinkedList.addToRear("4"); + oneLinkedList.printItems(); + boolean itemExist = oneLinkedList.findItem("3"); + System.out.println(itemExist ? "节点存在" : "节点不存在"); + System.out.println("链表长度为" + oneLinkedList.size()); + oneLinkedList.printItems(); + oneLinkedList.deleteItems("2"); + oneLinkedList.printItems(); + oneLinkedList.deleteItems("4"); + oneLinkedList.printItems(); + oneLinkedList.deleteItems("5"); + oneLinkedList.printItems(); + + System.out.println("2.题目"); + TowLinkedList towLinkedList = new TowLinkedList<>(); + towLinkedList.addToFront("1"); + towLinkedList.addToFront("2"); + towLinkedList.addToRear("3"); + towLinkedList.addToRear("4"); + towLinkedList.printItems(); + boolean itemExist1 = towLinkedList.findItem("3"); + System.out.println(itemExist1 ? "节点存在" : "节点不存在"); + itemExist1 = towLinkedList.findItem("5"); + System.out.println(itemExist1 ? "节点存在" : "节点不存在"); + System.out.println("链表长度为" + towLinkedList.size()); + towLinkedList.printItems(); + towLinkedList.deleteItems("2"); + towLinkedList.printItems(); + towLinkedList.deleteItems("4");//测试删除尾结点 + towLinkedList.printItems(); + towLinkedList.addToRear("4"); + towLinkedList.printItems(); + towLinkedList.deleteItems("5"); + towLinkedList.printItems(); + System.out.println("3.题目"); + ThreeLinkedList threeLinkedList = new ThreeLinkedList<>(); + threeLinkedList.addToFront("1"); + threeLinkedList.addToFront("2"); + threeLinkedList.addToRear("3"); + threeLinkedList.addToRear("5"); + threeLinkedList.printItems(); + threeLinkedList.deleteItems("5"); + threeLinkedList.printItems(); + threeLinkedList.deleteItems("5"); + threeLinkedList.printItems(); } } \ No newline at end of file diff --git a/t3/Node.java b/t3/Node.java new file mode 100644 index 0000000..dc2051d --- /dev/null +++ b/t3/Node.java @@ -0,0 +1,11 @@ +package t3; + +public class Node { + E item; + Node prev = null; + Node next = null; + + Node(E item) { + this.item = item; + } +} \ No newline at end of file diff --git a/t3/ThreeLinkedList.java b/t3/ThreeLinkedList.java new file mode 100644 index 0000000..bcf0568 --- /dev/null +++ b/t3/ThreeLinkedList.java @@ -0,0 +1,86 @@ +package t3; + +public class ThreeLinkedList { + + private Node head, tail; + + public ThreeLinkedList() { + this.head = null; + this.tail = null; + } + + public void addToFront(E item) { + Node node = new Node<>(item); + if (head == null) { + tail = node; + } else { + head.prev = node; + node.next = head; + } + head = node; + } + + public void addToRear(E item) { + Node node = new Node<>(item); + if (head == null) { + head = node; + } else { + tail.next = node; + node.prev = tail; + } + tail = node; + } + + //删除节点 前提元素不重复 + public void deleteItems(E value) { + Node node = head; + String itemStr = (String) node.item; + while (!itemStr.equals(value)) { + if (node.next == null) { + System.out.println("找不到节点"); + return; + } + node = node.next; + itemStr = (String) node.item; + } + if (node == head) { + head = head.next; + } else { + node.prev.next = node.next; + } + } + + + //判断节点是否存在 + public boolean findItem(E value) { + Node temp = head; + while (temp != null) { + //这里全当字符串处理 + String itemStr = (String) temp.item; + if (itemStr.equals(value)) { + //内容相同节点存在结束循环 + return true; + } + temp = temp.next; + } + return false; + } + + + // 打印所有节点 + public void printItems() { + if (head != null) { + String nodeListStr = ""; + Node temp = head; + while (temp != null) { + nodeListStr += (temp.item + "->"); + temp = temp.next; + } + System.out.println(nodeListStr); + } else { + System.out.println("空链表"); + } + } + +} + diff --git a/ti1/Node.java b/ti1/Node.java new file mode 100644 index 0000000..e905b6d --- /dev/null +++ b/ti1/Node.java @@ -0,0 +1,10 @@ +package ti1; + +public class Node { + E item; + Node next = null; + + Node(E item) { + this.item = item; + } +} \ No newline at end of file diff --git a/ti1/OneLinkedList.java b/ti1/OneLinkedList.java new file mode 100644 index 0000000..87778a0 --- /dev/null +++ b/ti1/OneLinkedList.java @@ -0,0 +1,102 @@ +package ti1; + +public class OneLinkedList { + + private Node head; + + public OneLinkedList() { + this.head = null; + } + + //添加到头部 + public void addToFront(E value) { + Node node = new Node(value); + if (head != null) { + node.next = head; + } + head = node; + } + + //添加到最后 + public void addToRear(E value) { + Node node = new Node<>(value); + if (head == null) { + head = node; + } else { + Node temp = head; + while (temp.next != null) { + temp = temp.next; + } + temp.next = node; + } + } + + // 打印所有节点 + public void printItems() { + if (head != null) { + String nodeListStr = ""; + Node temp = head; + while (temp != null) { + nodeListStr += (temp.item + "->"); + temp = temp.next; + } + System.out.println(nodeListStr); + } else { + System.out.println("空链表"); + } + } + + //删除节点 前提元素不重复 + public void deleteItems(E value) { + if (head != null) { + String headStr = (String) head.item; + if (headStr.equals(value)){ + head= head.next; + return; + } + Node preNode = head; + Node curNode = head.next; + while (curNode != null) { + //这里全当字符串处理 + String itemStr = (String) curNode.item; + if (itemStr.equals(value)) { + //内容相同进行删除 结束循环 + preNode.next= curNode.next; + return; + } + preNode=preNode.next; + curNode=preNode.next; + } + System.out.println("无此节点,删除失败"); + } else { + System.out.println("链表为空,无法进行删除操作"); + } + } + + //判断节点是否存在 + public boolean findItem(E value) { + Node temp = head; + while (temp != null) { + //这里全当字符串处理 + String itemStr = (String) temp.item; + if (itemStr.equals(value)) { + //内容相同节点存在结束循环 + 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/ti2/Node.java b/ti2/Node.java new file mode 100644 index 0000000..da7d3f8 --- /dev/null +++ b/ti2/Node.java @@ -0,0 +1,10 @@ +package ti2; + +public class Node { + E item; + Node next = null; + + Node(E item) { + this.item = item; + } +} \ No newline at end of file diff --git a/ti2/TowLinkedList.java b/ti2/TowLinkedList.java new file mode 100644 index 0000000..59c9888 --- /dev/null +++ b/ti2/TowLinkedList.java @@ -0,0 +1,107 @@ +package ti2; + + +public class TowLinkedList { + private Node head, tail; + + public TowLinkedList() { + this.head = null; + this.tail = null; + } + + //添加到头部 + public void addToFront(E value) { + Node node = new Node(value); + if (head == null) { + tail = node; + } else { + node.next = head; + } + head = node; + } + + //添加到最后 + public void addToRear(E value) { + Node node = new Node(value); + if (head == null) { + head = node; + } else { + tail.next = node; + } + tail = node; + } + + // 打印所有节点 + public void printItems() { + if (head != null) { + String nodeListStr = ""; + Node temp = head; + while (temp != null) { + nodeListStr += (temp.item + "->"); + temp = temp.next; + } + System.out.println(nodeListStr); + } else { + System.out.println("空链表"); + } + } + + //删除节点 前提元素不重复 + public void deleteItems(E value) { + if (head != null) { + String headStr = (String) head.item; + if (headStr.equals(value)) { + head = head.next; + return; + } + Node preNode = head; + Node curNode = head.next; + while (curNode != null) { + //这里全当字符串处理 + String itemStr = (String) curNode.item; + if (itemStr.equals(value)) { + if (curNode.next == null) { + //删除最后一项 + //移动尾指针 + tail = preNode; + } + //内容相同进行删除 结束循环 + preNode.next = curNode.next; + return; + } + preNode = preNode.next; + curNode = preNode.next; + } + System.out.println("无此节点,删除失败"); + } else { + System.out.println("链表为空,无法进行删除操作"); + } + } + + //判断节点是否存在 + public boolean findItem(E value) { + Node temp = head; + while (temp != null) { + //这里全当字符串处理 + String itemStr = (String) temp.item; + if (itemStr.equals(value)) { + //内容相同节点存在结束循环 + 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; + } + +} -- Gitee