From ecc04a8da1313c5eca4935a4f5910cb9f27e1973 Mon Sep 17 00:00:00 2001 From: 13306922088 <1643531577@qq.com> Date: Tue, 17 Nov 2020 23:30:33 +0800 Subject: [PATCH] lsj --- basics/queue/array/Queue.java | 77 ++++++++++++++++++++++++++++++ basics/queue/array/Test.java | 15 ++++++ basics/queue/linked/Node.java | 24 ++++++++++ basics/queue/linked/Queue.java | 58 +++++++++++++++++++++++ basics/queue/linked/Test.java | 18 +++++++ basics/stack/array/Stack.java | 75 +++++++++++++++++++++++++++++ basics/stack/array/Test.java | 15 ++++++ basics/stack/linked/Node.java | 24 ++++++++++ basics/stack/linked/Stack.java | 87 ++++++++++++++++++++++++++++++++++ basics/stack/linked/Test.java | 17 +++++++ 10 files changed, 410 insertions(+) create mode 100644 basics/queue/array/Queue.java create mode 100644 basics/queue/array/Test.java create mode 100644 basics/queue/linked/Node.java create mode 100644 basics/queue/linked/Queue.java create mode 100644 basics/queue/linked/Test.java create mode 100644 basics/stack/array/Stack.java create mode 100644 basics/stack/array/Test.java create mode 100644 basics/stack/linked/Node.java create mode 100644 basics/stack/linked/Stack.java create mode 100644 basics/stack/linked/Test.java diff --git a/basics/queue/array/Queue.java b/basics/queue/array/Queue.java new file mode 100644 index 0000000..216c6ad --- /dev/null +++ b/basics/queue/array/Queue.java @@ -0,0 +1,77 @@ +package basics.queue.array; + + +public class Queue { + private Integer[] queue; + private Integer rear = 0; + private Integer size = 0; + + public Queue() { + + } + + public Queue(int size) { + queue = new Integer[size]; + } + + //入队 + public void add(Integer item) { + if (size == queue.length) { + System.out.println("队列已满"); + return; + } + queue[rear++] = item; + size++; + } + //出队 + public Integer remove() { + Integer head = queue[0]; + //所有元素往前移动 + for (int i = 0; i < size - 1; i++) { + Integer temp = queue[i + 1]; + queue[i + 1] = queue[i]; + queue[i] = temp; + } + queue[size - 1] = null; + rear--; + size--; + System.out.println("移除的元素:" + head); + return head; + } + public Integer peek() { + return queue[0]; + } + + @Override + public String toString() { + StringBuilder builder = new StringBuilder(); + for (int i = 0; i < size; i++) { + builder.append(queue[i] + " "); + } + return builder.toString(); + } + + public Integer[] getQueue() { + return queue; + } + + public void setQueue(Integer[] queue) { + this.queue = queue; + } + + public Integer getRear() { + return rear; + } + + public void setRear(Integer rear) { + this.rear = rear; + } + + public Integer getSize() { + return size; + } + + public void setSize(Integer size) { + this.size = size; + } +} diff --git a/basics/queue/array/Test.java b/basics/queue/array/Test.java new file mode 100644 index 0000000..e45d474 --- /dev/null +++ b/basics/queue/array/Test.java @@ -0,0 +1,15 @@ +package basics.queue.array; + +public class Test { + public static void main(String[] args) { + Queue queue = new Queue(5); + queue.add(1); + queue.add(2); + queue.add(3); + System.out.println("队列中的元素: " + queue); + queue.remove(); + System.out.println("队列中的元素: " + queue); + System.out.println("查看队首元素不移除: " + queue.peek()); + System.out.println("队列中的元素: " + queue); + } +} diff --git a/basics/queue/linked/Node.java b/basics/queue/linked/Node.java new file mode 100644 index 0000000..183ddad --- /dev/null +++ b/basics/queue/linked/Node.java @@ -0,0 +1,24 @@ +package basics.queue.linked; + +public class Node { + private Integer data; + private Node next; + + public Integer getData() { + return data; + } + + public void setData(Integer data) { + this.data = data; + } + + public Node getNext() { + return next; + } + + public void setNext(Node next) { + this.next = next; + } + +} + diff --git a/basics/queue/linked/Queue.java b/basics/queue/linked/Queue.java new file mode 100644 index 0000000..75dc987 --- /dev/null +++ b/basics/queue/linked/Queue.java @@ -0,0 +1,58 @@ +package basics.queue.linked; + +public class Queue { + private Node head; + private Node end; + private Integer size = 0; + + + //初始化栈 + public Queue() { + head = new Node(); + } + //入队 + public void add(Integer data) { + Node newNode = new Node(); + newNode.setData(data); + if (size == 0) { + head = end = newNode; + size++; + return; + } + end.setNext(newNode); + end = newNode; + size++; + } + //出队 + public Integer remove() { + Node node = head; + head = head.getNext(); + size--; + System.out.println("移除队首元素" + node.getData()); + return node.getData(); + } + public Integer peek() { + return head.getData(); + } + @Override + public String toString() { + StringBuilder builder = new StringBuilder(); + Node temp = head; + while (null != temp.getNext() ) { + builder.append(temp.getData() + " "); + temp = temp.getNext(); + } + //加入最後一個元素 + builder.append(temp.getData()); + return builder.toString(); + } + + public Integer getSize() { + return size; + } + + public void setSize(Integer size) { + this.size = size; + } + +} diff --git a/basics/queue/linked/Test.java b/basics/queue/linked/Test.java new file mode 100644 index 0000000..97e6f74 --- /dev/null +++ b/basics/queue/linked/Test.java @@ -0,0 +1,18 @@ +package basics.queue.linked; + +public class Test { + public static void main(String[] args) { + Queue queue = new Queue(); + queue.add(1); + queue.add(2); + queue.add(3); + System.out.println("队列中的元素: " + queue); + System.out.println("队列中元素的个数: " + queue.getSize()); + queue.remove(); + System.out.println("队列中的元素: " + queue); + System.out.println("队列中元素的个数: " + queue.getSize()); + System.out.println("查看队首元素不移除: " + queue.peek()); + System.out.println("队列中的元素: " + queue); + System.out.println("队列中元素的个数: " + queue.getSize()); + } +} diff --git a/basics/stack/array/Stack.java b/basics/stack/array/Stack.java new file mode 100644 index 0000000..7c15926 --- /dev/null +++ b/basics/stack/array/Stack.java @@ -0,0 +1,75 @@ +package basics.stack.array; + + +public class Stack { + private Integer[] stack; + private Integer top;//top永远指向下一个可放入的位置 + private Integer size = 0; + + public Stack() { + + } + + //初始化栈 + public Stack(int size) { + stack = new Integer[size]; + top = 0; + } + //往栈顶添加元素 + public void push(Integer item) { + if (top >= stack.length) { + System.out.println("栈以满 无法入栈"); + return; + } + stack[top++] = item; + size++; + } + //从栈顶取出元素 + public Integer getItem() { + if (size == 0) { + return null; + } + Integer item = stack[top - 1]; + stack[top - 1] = null; + top--; + size--; + return item; + } + + public Integer peekTopItem() { + if (size == 0) { + return null; + } + Integer item = stack[top - 1]; + return item; + } + + @Override + public String toString() { + StringBuilder builder = new StringBuilder(); + for (int i = 0; i < size; i++) { + builder.append(stack[i]+ " "); + } + return builder.toString(); + } + + + public Integer[] getStack() { + return stack; + } + + public void setStack(Integer[] stack) { + this.stack = stack; + } + + + public Integer getSize() { + return size; + } + + public void setSize(Integer size) { + this.size = size; + } + + +} diff --git a/basics/stack/array/Test.java b/basics/stack/array/Test.java new file mode 100644 index 0000000..14f4cdd --- /dev/null +++ b/basics/stack/array/Test.java @@ -0,0 +1,15 @@ +package basics.stack.array; + +public class Test { + public static void main(String[] args) { + Stack stack = new Stack(5); + stack.push(1); + stack.push(2); + System.out.println("看看棧頂元素不取出:" + stack.peekTopItem()); + System.out.println("栈中的元素为: " + stack); + Integer top = stack.getItem(); + System.out.println("取出的栈顶元素为:" + top); + System.out.println("当前栈中元素个数为:" + stack.getSize()); + System.out.println("栈中的元素为: " + stack); + } +} diff --git a/basics/stack/linked/Node.java b/basics/stack/linked/Node.java new file mode 100644 index 0000000..6ba73e3 --- /dev/null +++ b/basics/stack/linked/Node.java @@ -0,0 +1,24 @@ +package basics.stack.linked; + +public class Node { + private Integer data; + private Node next; + + public Integer getData() { + return data; + } + + public void setData(Integer data) { + this.data = data; + } + + public Node getNext() { + return next; + } + + public void setNext(Node next) { + this.next = next; + } + +} + diff --git a/basics/stack/linked/Stack.java b/basics/stack/linked/Stack.java new file mode 100644 index 0000000..21ad8f4 --- /dev/null +++ b/basics/stack/linked/Stack.java @@ -0,0 +1,87 @@ +package basics.stack.linked; + + +public class Stack { + private Node head; + private Node end; + private Integer size = 0; + + //初始化栈 + public Stack() { + head = new Node(); + } + + //往栈顶添加元素 + public void push(Integer data) { + Node newNode = new Node(); + newNode.setData(data); + if (size == 0) { + head = end = newNode; + size++; + return; + } + end.setNext(newNode); + end = newNode; + size++; + } + //从栈顶取出元素 + public Integer getItem() { + if (size == 0) { + return null; + } + //遍历到最后一个元素的上一个元素 + Node item = head; + for (int i = 0; i < size - 2; i++) { + item = item.getNext(); + } + //取出最后一个元素的数据返回 + Integer data = end.getData(); + end = item; + end.setNext(null); + size--; + return data; + } + + public Integer peekTopItem() { + return end.getData(); + } + + @Override + public String toString() { + StringBuilder builder = new StringBuilder(); + Node temp = head; + while (null != temp.getNext() ) { + builder.append(temp.getData() + " "); + temp = temp.getNext(); + } + //加入最後一個元素 + builder.append(temp.getData()); + return builder.toString(); + } + + + public Node getHead() { + return head; + } + + public void setHead(Node head) { + this.head = head; + } + + public Integer getSize() { + return size; + } + + public void setSize(Integer size) { + this.size = size; + } + + public Node getEnd() { + return end; + } + + public void setEnd(Node end) { + this.end = end; + } + +} diff --git a/basics/stack/linked/Test.java b/basics/stack/linked/Test.java new file mode 100644 index 0000000..82e5451 --- /dev/null +++ b/basics/stack/linked/Test.java @@ -0,0 +1,17 @@ +package basics.stack.linked; + +public class Test { + public static void main(String[] args) { + Stack stack = new Stack(); + stack.push(1); + stack.push(2); + System.out.println("当前栈中元素个数:" + stack.getSize()); + System.out.println("栈中的元素为: " + stack); + System.out.println("看看棧頂元素不取出:" + stack.peekTopItem()); + Integer item = stack.getItem(); + System.out.println("取出的元素:" + item); + System.out.println("栈中的元素为: " + stack); + System.out.println("当前栈中元素个数:" + stack.getSize()); + stack.push(3); + } +} -- Gitee