diff --git a/ArrayQueue.java b/ArrayQueue.java
new file mode 100644
index 0000000000000000000000000000000000000000..f0de56bc088ae518af9c262c7739dbda54a6562d
--- /dev/null
+++ b/ArrayQueue.java
@@ -0,0 +1,66 @@
+public class ArrayQueue {
+ // 先进先出
+ private Object[] array;
+ private int rear = 0;
+
+ ArrayQueue(int length) {
+ array = new Object[length];
+ }
+
+ //插入
+ public void add(A item) {
+ if (item == null) {
+ System.out.println("插入失败:元素不能为空");
+ return;
+ }
+ try {
+ array[rear] = item;
+ rear++;//成功后自增
+ } catch (Exception e) {
+ System.out.println("插入失败,队列已满");
+ }
+ }
+
+ //移除头部元素
+ public A remove() {
+ if (isEmpty()) {
+ System.out.println("无元素");
+ return null;
+ }
+ try {
+ int i = 0;
+ A a = (A) array[0];
+ for (int j = 0; j < rear - 1; j++) {
+ array[j] = array[j + 1];
+ i++;
+ }
+ rear = i;
+ return a;
+ } catch (Exception e) {
+ System.out.println("移除失败");
+ }
+ return null;
+
+ }
+
+ // 获取头部元素
+ public A peek() {
+ if (isEmpty()) {
+ System.out.println("无元素");
+ return null;
+ }
+ A a = (A) array[0];
+ return a;
+ }
+
+ public int size() {
+ return rear;
+ }
+
+ public boolean isEmpty() {
+ if (rear == 0) {
+ return true;
+ }
+ return false;
+ }
+}
diff --git a/ArrayStack.java b/ArrayStack.java
new file mode 100644
index 0000000000000000000000000000000000000000..70951be44358af672f4606da3e30aa2a69cf62da
--- /dev/null
+++ b/ArrayStack.java
@@ -0,0 +1,62 @@
+public class ArrayStack {
+ private Object[] stack;
+ private int topPointer;//栈顶指针
+
+ // 数组现实的栈
+ public ArrayStack(int length) { stack = new Object[length];
+ }
+
+ // 入栈
+ public void push(A a) {
+ if (a == null) {
+ System.out.println("插入失败:元素不能为空");
+ return;
+ }
+ try {
+ stack[topPointer] = a;
+ ++topPointer;//成功后自增
+ } catch (Exception e) {
+ System.out.println("插入失败,栈已满");
+ }
+ }
+
+ // 出栈
+ public A pop() {
+ if (isEmpty()) {
+ return null;
+ }
+ try {
+ A a = (A) stack[topPointer - 1];
+ stack[topPointer - 1] = null;//取出元素后清空
+ topPointer--;//成功后
+ return a;
+ } catch (Exception e) {
+ System.out.println("出栈失败,栈已空");
+ }
+ return null;
+ }
+
+ //查看栈顶元素
+ public A peek() {
+ if (isEmpty()) {
+ return null;
+ }
+ try {
+ return (A) stack[topPointer - 1];
+ } catch (Exception e) {
+ System.out.println("查看失败,栈已空");
+ }
+ return null;
+ }
+
+ public int size() {
+ return topPointer;
+ }
+
+ public boolean isEmpty() {
+ if (topPointer == 0) {
+ return true;
+ }
+ return false;
+ }
+}
diff --git a/LinkedList.java b/LinkedList.java
new file mode 100644
index 0000000000000000000000000000000000000000..112183c2705cf6b5aefaece0add8fa26860560dc
--- /dev/null
+++ b/LinkedList.java
@@ -0,0 +1,52 @@
+public class LinkedList {
+ private P head, tail;
+ private int size = 0;
+
+ public int getSize() {
+ return size;
+ }
+
+ public void addToFront(B value) {
+ P node = new P(value);
+ if (head == null) {
+ head = node;
+ tail = head;
+ } else {
+ node.next = head;
+ head = node;
+ }
+ size++;
+ }
+
+ public void addToRear(B value) {
+ P node = new P(value);
+ if (tail == null) {
+ tail = node;
+ head = tail;
+ } else {
+ tail.next = node;
+ tail = node;
+ }
+ size++;
+ }
+
+
+ //删除头部节点
+ public B delTopNode() {
+ if (head == null) {
+ return null;
+ }
+ B value = (B) head.value;
+ head = head.next;//删除头节点
+ size--;
+ return value;
+ }
+
+ //查看头部节点
+ public B inquiryTopNode() {
+ if (head == null) {
+ return null;
+ }
+ return (B) head.value;
+ }
+}
diff --git a/LinkedListQueue.java b/LinkedListQueue.java
new file mode 100644
index 0000000000000000000000000000000000000000..5a14b6d8815aacb13d4de4c8ccfc85e24b11855f
--- /dev/null
+++ b/LinkedListQueue.java
@@ -0,0 +1,49 @@
+public class LinkedListQueue {
+ private LinkedList myLinkedList = new LinkedList<>();
+ private int size;
+
+ //插入
+ public void add(B item) {
+ myLinkedList.addToRear(item);
+ size++;
+ }
+
+
+ //移除头部元素
+ public B remove() {
+ if (isEmpty()) {
+ System.out.println("无元素");
+ return null;
+ }
+ try {
+ B b = myLinkedList.delTopNode();
+ size--;
+ return b;
+ } catch (Exception e) {
+ System.out.println("移除失败");
+ }
+ return null;
+
+ }
+
+ // 获取头部元素
+ public B peek() {
+ if (isEmpty()) {
+ System.out.println("无元素");
+ return null;
+ }
+ B b = myLinkedList.inquiryTopNode();
+ return b;
+ }
+
+ public int size() {
+ return size;
+ }
+
+ public boolean isEmpty() {
+ if (size == 0) {
+ return true;
+ }
+ return false;
+ }
+}
diff --git a/LinkedListStack.java b/LinkedListStack.java
new file mode 100644
index 0000000000000000000000000000000000000000..3e9c8cbe1ab988ff6229d2eea515d5a901bef678
--- /dev/null
+++ b/LinkedListStack.java
@@ -0,0 +1,46 @@
+public class LinkedListStack {
+ //栈顶即为链表头部元素
+
+ private LinkedList myLinkedList = new LinkedList<>();
+ private int size=0;
+
+ // 入栈(插入到链表头部)
+ public void push(B value) {
+ if (value==null){
+ System.out.println("插入失败:元素不能为空");
+ return;
+ }
+ myLinkedList.addToFront(value);
+ size++;
+ }
+
+ // 出栈(从链表头部取出)
+ public B pop() {
+ if(isEmpty()){
+ return null;
+ }
+ B b = myLinkedList.delTopNode();
+ size--;
+ return b;
+ }
+
+ //查看栈顶元素
+ public B peek() {
+ if(isEmpty()){
+ return null;
+ }
+ B b = myLinkedList.inquiryTopNode();
+ return b;
+ }
+
+ public int size() {
+ return this.size;
+ }
+
+ public boolean isEmpty() {
+ if (this.size == 0) {
+ return true;
+ }
+ return false;
+ }
+}
diff --git a/Main.java b/Main.java
new file mode 100644
index 0000000000000000000000000000000000000000..4e7fd5769bf616da0ef101e0ad909448a953d0e1
--- /dev/null
+++ b/Main.java
@@ -0,0 +1,71 @@
+public class Main {
+ public static void main(String[] args) {
+ System.out.println("基础部分");
+ System.out.println("1.用数组实现栈*********************************************");
+ ArrayStack arrayStack = new ArrayStack(3);
+ System.out.println("栈是否为空" + arrayStack.isEmpty());
+ arrayStack.push("a");
+ arrayStack.push("b");
+ arrayStack.push(null);
+ arrayStack.push("d");
+ System.out.println("查看栈顶元素" + arrayStack.peek());
+ System.out.println("出栈" + arrayStack.pop());
+ System.out.println("查看栈顶元素" + arrayStack.peek());
+ System.out.println("栈内元素个数:" + arrayStack.size() + "个");
+ System.out.println("栈是否为空" + arrayStack.isEmpty());
+
+ System.out.println();
+ System.out.println();
+
+ System.out.println("2.用带尾指针的链表实现栈************************************");
+ LinkedListStack linkedListStack = new LinkedListStack<>();
+ System.out.println("栈是否为空" + linkedListStack.isEmpty());
+ linkedListStack.push("a");
+ linkedListStack.push("b");
+ linkedListStack.push(null);
+ linkedListStack.push("d");
+ System.out.println("查看栈顶元素" + linkedListStack.peek());
+ System.out.println("出栈" + linkedListStack.pop());
+ System.out.println("查看栈顶元素" + linkedListStack.peek());
+ System.out.println("栈内元素个数:" + linkedListStack.size() + "个");
+ System.out.println("栈是否为空" + linkedListStack.isEmpty());
+
+ System.out.println();
+ System.out.println();
+
+ System.out.println("3.用数组实现队列*******************************************");
+ ArrayQueue arrayQueue = new ArrayQueue<>(4);
+ System.out.println("队列是否为空" + arrayQueue.isEmpty());
+ arrayQueue.add("a");
+ arrayQueue.add("b");
+ arrayQueue.add("c");
+ arrayQueue.add("d");
+ System.out.println("查看队列头部元素" + arrayQueue.peek());
+ System.out.println("移除头部元素" + arrayQueue.remove());
+ System.out.println("查看队列头部元素" + arrayQueue.peek());
+ System.out.println("队列元素个数:" + arrayQueue.size() + "个");
+ System.out.println("队列是否为空" + arrayQueue.isEmpty());
+
+ System.out.println();
+ System.out.println();
+
+
+ System.out.println("4.用链表实现队列*******************************************");
+ LinkedListQueue linkedListQueue = new LinkedListQueue<>();
+ System.out.println("队列是否为空" + linkedListQueue.isEmpty());
+ linkedListQueue.add("a");
+ linkedListQueue.add("b");
+ linkedListQueue.add("c");
+ linkedListQueue.add("d");
+ System.out.println("查看队列头部元素" + linkedListQueue.peek());
+ System.out.println("移除头部元素" + linkedListQueue.remove());
+ System.out.println("查看队列头部元素" + linkedListQueue.peek());
+ System.out.println("队列元素个数:" + linkedListQueue.size() + "个");
+ System.out.println("队列是否为空" + linkedListQueue.isEmpty());
+
+ System.out.println();
+ System.out.println();
+ System.out.println();
+ System.out.println();
+ }
+}
diff --git a/P.java b/P.java
new file mode 100644
index 0000000000000000000000000000000000000000..95265e6cc50995115dc6f495536c11fb524e4067
--- /dev/null
+++ b/P.java
@@ -0,0 +1,8 @@
+public class P {
+ B value;
+ P next = null;
+
+ P(B value) {
+ this.value = value;
+ }
+}