数据结构学习笔记三:栈

数据结构学习笔记三:栈和队列

栈的介绍

栈(stack),是一种线性存储结构,它有以下几个特点:
(01) 栈中数据是按照"后进先出(LIFO, Last In First Out)"方式进出栈的。
(02) 向栈中添加/删除数据时,只能从栈顶进行操作。

栈通常包括的三种操作:push、peek、pop。
push – 向栈中添加元素。
peek – 返回栈顶元素。
pop – 返回并删除栈顶元素的操作。

1.栈的示意图

数据结构学习笔记三:栈_第1张图片
栈中的数据依次是 30 --> 20 --> 10

2.出栈

数据结构学习笔记三:栈_第2张图片
出栈前:栈顶元素是30。此时,栈中的元素依次是 30 --> 20 --> 10
出栈后:30出栈之后,栈顶元素变成20。此时,栈中的元素依次是 20 --> 10

3.入栈

数据结构学习笔记三:栈_第3张图片
入栈前:栈顶元素是20。此时,栈中的元素依次是 20 --> 10
入栈后:40入栈之后,栈顶元素变成40。此时,栈中的元素依次是 40 --> 20 --> 10

4.实现

import java.lang.reflect.Array;

public lass GeneralArrayStack{
	
		private static final int DEFAULT_SIZE = 12;
		private T[] mArray;
		private int count;

		public GeneralArrayStack(Class type){
			this(type, DEFAULT_SIZE);
		}

		public GeneralArrayStack(Class type, int size){
			mArray = (T[]) Array.newInstance(type, size);
			count = 0;
		}
		
		//push val into stack
		public void push(T val){
			mArray[count++] = val;
		}

		//return stack's top
		public T peek(){
			return mArray[count-1];
		}

		//return stack's top and delete it
		public T pop(){
			T ret = mArray[count-1];
			count--;
			return ret;
		}

		//return size of stack
		public int size(){
			return count;
		}

		//return true if stack is empty
		public boolean isEmpty(){
			return size()==0;
		}

		//print stack
		public void PrintArrayStack(){
			if(isEmpty()){
				System.out.println("stack is empty\n");
			}
			System.out.println("stack size =" + size());
			int i = size-1;
			while(i >=0){
				System.out.println(mArray[i]);
				i--;
			}
		}

你可能感兴趣的:(DataStructure)