From 7adf0437b75dd31d20a9775938c7a465d485c691 Mon Sep 17 00:00:00 2001
From: rjz <646600130@qq.com>
Date: Tue, 17 Nov 2020 19:07:49 +0800
Subject: [PATCH] =?UTF-8?q?=E6=B5=8B=E8=AF=95?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.idea/.gitignore | 8 +++++
.idea/misc.xml | 6 ++++
.idea/modules.xml | 8 +++++
.idea/vcs.xml | 6 ++++
Lianbiaoduilie.java | 50 +++++++++++++++++++++++++++++++
Lianbiaozan.java | 48 +++++++++++++++++++++++++++++
MYLinkedList.java | 54 +++++++++++++++++++++++++++++++++
Main.java | 70 +++++++++++++++++++++++++++++++++++++++++++
Node.java | 8 +++++
Shuzuduilie.java | 65 ++++++++++++++++++++++++++++++++++++++++
Shuzuzhan.java | 70 +++++++++++++++++++++++++++++++++++++++++++
lec03-stack-queue.iml | 11 +++++++
12 files changed, 404 insertions(+)
create mode 100644 .idea/.gitignore
create mode 100644 .idea/misc.xml
create mode 100644 .idea/modules.xml
create mode 100644 .idea/vcs.xml
create mode 100644 Lianbiaoduilie.java
create mode 100644 Lianbiaozan.java
create mode 100644 MYLinkedList.java
create mode 100644 Main.java
create mode 100644 Node.java
create mode 100644 Shuzuduilie.java
create mode 100644 Shuzuzhan.java
create mode 100644 lec03-stack-queue.iml
diff --git a/.idea/.gitignore b/.idea/.gitignore
new file mode 100644
index 0000000..a571cdd
--- /dev/null
+++ b/.idea/.gitignore
@@ -0,0 +1,8 @@
+# Default ignored files
+/shelf/
+/workspace.xml
+# Datasource local storage ignored files
+/../../../../../:\JAVA\数据结构\lec03-stack-queue\.idea/dataSources/
+/dataSources.local.xml
+# Editor-based HTTP Client requests
+/httpRequests/
diff --git a/.idea/misc.xml b/.idea/misc.xml
new file mode 100644
index 0000000..1763e15
--- /dev/null
+++ b/.idea/misc.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/modules.xml b/.idea/modules.xml
new file mode 100644
index 0000000..d799b01
--- /dev/null
+++ b/.idea/modules.xml
@@ -0,0 +1,8 @@
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/vcs.xml b/.idea/vcs.xml
new file mode 100644
index 0000000..35eb1dd
--- /dev/null
+++ b/.idea/vcs.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Lianbiaoduilie.java b/Lianbiaoduilie.java
new file mode 100644
index 0000000..ee4bd29
--- /dev/null
+++ b/Lianbiaoduilie.java
@@ -0,0 +1,50 @@
+public class Lianbiaoduilie {
+ private MYLinkedList myLinkedList = new MYLinkedList<>();
+ private int size;
+
+ //插入
+ public void add(E item) {
+ myLinkedList.addToRear(item);
+ size++;
+ }
+
+
+ //移除头部元素
+ public E remove() {
+ if (isEmpty()) {
+ System.out.println("无元素");
+ return null;
+ }
+ try {
+ E e = myLinkedList.delTopNode();
+ size--;
+ return e;
+ } catch (Exception e) {
+ System.out.println("移除失败");
+ }
+ return null;
+
+ }
+
+ // 获取头部元素
+ public E peek() {
+ if (isEmpty()) {
+ System.out.println("无元素");
+ return null;
+ }
+ E e = myLinkedList.inquiryTopNode();
+ return e;
+ }
+
+ public int size() {
+ return size;
+ }
+
+ public boolean isEmpty() {
+ if (size == 0) {
+ return true;
+ }
+ return false;
+ }
+
+}
diff --git a/Lianbiaozan.java b/Lianbiaozan.java
new file mode 100644
index 0000000..6499ec2
--- /dev/null
+++ b/Lianbiaozan.java
@@ -0,0 +1,48 @@
+public class Lianbiaozan {
+ //栈顶即为链表头部元素
+
+ private MYLinkedList myLinkedList = new MYLinkedList<>();
+ private int size=0;
+
+ // 入栈(插入到链表头部)
+ public void push(E value) {
+ if (value==null){//输入值为空
+ System.out.println("插入失败:元素为空");
+ return;
+ }
+ myLinkedList.addToFront(value);
+ size++;
+ }
+
+ // 出栈(从链表头部取出)
+ public E pop() {
+ if(isEmpty()){
+ return null;
+ }
+ E e = myLinkedList.delTopNode();
+ size--;
+ return e;
+ }
+
+ //查看栈顶元素
+ public E peek() {
+ if(isEmpty()){
+ return null;
+ }
+ E e = myLinkedList.inquiryTopNode();//链表头元素赋值
+ return e;
+ }
+
+ public int size() {
+ return this.size;
+ }//获取长度
+
+ public boolean isEmpty() {
+ if (this.size == 0) {
+ return true;
+ }
+ return false;
+ }
+
+
+}
diff --git a/MYLinkedList.java b/MYLinkedList.java
new file mode 100644
index 0000000..cb7d50b
--- /dev/null
+++ b/MYLinkedList.java
@@ -0,0 +1,54 @@
+public class MYLinkedList {
+ private Node head, tail;
+ private int size = 0;
+
+ public int getSize() {
+ return size;
+ }
+
+ public void addToFront(E value) {
+ Node node = new Node(value);
+ if (head == null) {
+ head = node;//判断头节点
+ tail = head;
+ } else {
+ node.next = head;
+ head = node;
+ }
+ size++;
+ }
+
+ public void addToRear(E value) {
+ Node node = new Node(value);
+ if (tail == null) {
+ tail = node;
+ head = tail;//判断尾节点
+ } else {
+ tail.next = node;
+ tail = node;
+ }
+ size++;
+ }
+
+
+ //删除头部节点
+ public E delTopNode() {
+ if (head == null) {
+ return null;
+ }
+ E value = (E) head.value;
+ head = head.next;//删除头节点
+ size--;
+ return value;
+ }
+
+ //查看头部节点
+ public E inquiryTopNode() {
+ if (head == null) {
+ return null;
+ }
+ return (E) head.value;
+ }
+
+
+}
diff --git a/Main.java b/Main.java
new file mode 100644
index 0000000..37e3faf
--- /dev/null
+++ b/Main.java
@@ -0,0 +1,70 @@
+import java.util.Arrays;
+
+public class Main {
+ public static void main(String[] args) {
+ System.out.println("数组实现栈");
+ Shuzuzhan Shuzuzhan = new Shuzuzhan(3);
+ Shuzuzhan.push("1");
+ Shuzuzhan.push("2");
+ Shuzuzhan.push(null);
+ Shuzuzhan.push("3");
+ Shuzuzhan.push("4");
+ System.out.println("查看栈顶元素" + Shuzuzhan.peek());
+ System.out.println("出栈" + Shuzuzhan.pop());
+ System.out.println("查看栈顶元素" + Shuzuzhan.peek());
+ System.out.println("栈内元素个数:" + Shuzuzhan.size());
+ System.out.println("栈是是否为空:" + Shuzuzhan.isEmpty());
+
+ System.out.println("------------------------------------");
+ System.out.println("------------------------------------");
+
+ System.out.println("带尾指针的链表实现栈");
+ Lianbiaozan Lianbiaozan = new Lianbiaozan<>();
+ Lianbiaozan.push("1");
+ Lianbiaozan.push("2");
+ Lianbiaozan.push(null);
+ Lianbiaozan.push("3");
+ System.out.println("查看栈顶元素" + Lianbiaozan.peek());
+ System.out.println("出栈" + Lianbiaozan.pop());
+ System.out.println("查看栈顶元素" + Lianbiaozan.peek());
+ System.out.println("栈内元素个数:" + Lianbiaozan.size());
+ System.out.println("栈是否为空" + Lianbiaozan.isEmpty());
+
+ System.out.println("------------------------------------");
+ System.out.println("------------------------------------");
+
+
+
+ System.out.println("链表实现队列");
+ Lianbiaoduilie Lianbiaoduilie = new Lianbiaoduilie<>();
+ Lianbiaoduilie.add("1");
+ Lianbiaoduilie.add("2");
+ Lianbiaoduilie.add("3");
+ Lianbiaoduilie.add("4");
+ System.out.println("查看队列头部元素" + Lianbiaoduilie.peek());
+ System.out.println("移除头部元素" + Lianbiaoduilie.remove());
+ System.out.println("查看队列头部元素" + Lianbiaoduilie.peek());
+ System.out.println("队列元素个数:" + Lianbiaoduilie.size());
+ System.out.println("队列是否为空" + Lianbiaoduilie.isEmpty());
+
+ System.out.println("------------------------------------");
+ System.out.println("------------------------------------");
+
+ System.out.println("数组实现队列");
+ Shuzuduilie Shuzuduilie = new Shuzuduilie<>(4);
+ Shuzuduilie.add("1");
+ Shuzuduilie.add("2");
+ Shuzuduilie.add("null");
+ Shuzuduilie.add("4");
+ System.out.println("查看队列头部元素" + Shuzuduilie.peek());
+ System.out.println("移除头部元素" + Shuzuduilie.remove());
+ System.out.println("查看队列头部元素" + Shuzuduilie.peek());
+ System.out.println("队列元素个数:" + Shuzuduilie.size());
+ System.out.println("队列是否为空" + Shuzuduilie.isEmpty());
+
+
+
+
+
+ }
+}
diff --git a/Node.java b/Node.java
new file mode 100644
index 0000000..72661db
--- /dev/null
+++ b/Node.java
@@ -0,0 +1,8 @@
+public class Node {
+ E value;
+ Node next = null;
+
+ Node(E value) {
+ this.value = value;
+ }
+}
diff --git a/Shuzuduilie.java b/Shuzuduilie.java
new file mode 100644
index 0000000..db17141
--- /dev/null
+++ b/Shuzuduilie.java
@@ -0,0 +1,65 @@
+import java.util.LinkedHashMap;
+
+public class Shuzuduilie {
+ private Object[] array;
+ private int rear = 0;
+ Shuzuduilie(int length) {
+ array = new Object[length];
+ } //定义长度
+
+ //插入
+ public void add(T item) {
+ if (item == null) throw new Error("插入失败:元素不能为空");
+
+ try {
+ array[rear] = item;
+ rear++;//成功后自增
+ } catch (Exception e) {
+ System.out.println("插入失败,队列已满");
+ }
+ }
+
+ //移除头部元素
+ public T remove() {
+ if (isEmpty()) {
+ System.out.println("无元素");
+ return null;
+ }
+ try {
+ int i = 0;
+ T t = (T) array[0];
+ for (int j = 0; j < rear - 1; j++) {
+ array[j] = array[j + 1];
+ i++;
+ }
+ rear = i;
+ return t;
+ } catch (Exception e) {
+ System.out.println("移除失败");
+ }
+ return null;
+
+ }
+
+ // 获取头部元素
+ public T peek() {
+ if (isEmpty()) {
+ System.out.println("无元素");
+ return null;
+ }
+ T t = (T) array[0];
+ return t;
+ }
+
+ public int size() {
+ return rear;
+ }
+
+ public boolean isEmpty() {
+ if (rear == 0) {
+ return true;
+ }
+ return false;
+ }
+
+}
diff --git a/Shuzuzhan.java b/Shuzuzhan.java
new file mode 100644
index 0000000..ab9b72d
--- /dev/null
+++ b/Shuzuzhan.java
@@ -0,0 +1,70 @@
+import java.lang.reflect.Array;
+import java.util.Arrays;
+
+public class Shuzuzhan {
+ private Object[] pen;
+ private int topPointer;//栈顶指针
+
+ // 数组现实的栈
+ public Shuzuzhan(int length) {
+ pen = new Object[length];
+ }
+
+ // 入栈
+ public void push(T t) {
+ if (t == null) {
+ System.out.println("插入失败:元素不能为空");
+ return;
+ }
+ try {
+ pen[topPointer] = t;//输入得数组值赋值
+ ++topPointer;//成功后自增
+ } catch (Exception e) {//由于设定了数组长度会出现溢出异常错误 会执行catch
+ System.out.println("插入失败,栈已满");
+ }
+ }
+
+ // 移除栈顶元素并返回
+ //检查栈是否为空并返回空值
+ public T pop() {
+ if (isEmpty()) {
+ return null;
+ }
+ try {//数组栈顶值最后一个进去得值拿出去即t
+ T t = (T) pen[topPointer - 1];
+ pen[topPointer - 1] = null;//取出元素后该位置为空
+ topPointer--;//成功长度-1
+ return t;//返回t
+ } catch (Exception e) {//z栈内没有输出局后出异常就执行catch
+ System.out.println("出栈失败,栈已空");
+ }
+ return null;
+ }
+
+ //获取栈顶元素
+ public T peek() {
+ if (isEmpty()) {
+ return null;
+ }
+ try {// 栈顶为3 但是数组从0开始终点2
+ return (T) pen[topPointer - 1];
+ } catch (Exception e) {
+ System.out.println("查看失败,栈已空");
+ }
+ return null;
+ }
+
+ public int size() {
+ return topPointer;
+ }
+ //size返回栈内元素个数
+
+ public boolean isEmpty() {//检查栈内是否为空
+ if (topPointer == 0) {
+ return true;
+ }
+ return false;
+ }
+
+
+}
diff --git a/lec03-stack-queue.iml b/lec03-stack-queue.iml
new file mode 100644
index 0000000..b107a2d
--- /dev/null
+++ b/lec03-stack-queue.iml
@@ -0,0 +1,11 @@
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
--
Gitee