java中基于链表的栈的实现及操作

最近在准备学校校招,复习了一些简单的数据结构知识,写了一些简单的实现代码。

在此将它记录下来,以便复习。

下面是利用链表来实现一个栈,已经相关的栈操作。

package com.wp.datastruct;

import java.security.Principal;

/**
 * 基于链表实现栈
 * */
public class MyStack2<E> {

		StackNode<E> top = null;		//栈顶,也是一个node节点
		
		public boolean isEmpty() {
			return top == null;
		}
		
		/**
		 * 往栈中push一个数据:
		 * 首先将要push的数据的next赋值为栈顶top
		 * 然后将栈顶指针指向新push进来的节点
		 * */
		public void push(E data) {
			StackNode<E> newNode = new StackNode<E>(data);
			newNode.next = top;
			top = newNode;
		}
		
		/**
		 * 从栈中弹出一个数据,
		 * 将栈顶指针指向弹出节点的下一个
		 * */
		public E pop() {
			if(this.isEmpty()) {
				System.out.println("栈已经空啦!不能再出栈啦!!!");
				return null;
			}
			E data = top.data;
			top = top.next;
			return data;
		}
		
		/**
		 * 返回栈顶数据,但是不出栈。数据任然保存在栈中
		 * */
		public E peek() {
			if(isEmpty()) {
				return null;
			}
			return top.data;
		}
		
		//将栈中所有数据出栈
		public void printStack() {
			System.out.println("开始出栈:");
			while(!isEmpty()) {
				System.out.println(top.data);
				top = top.next;
			}
			System.out.println("出栈结束!");
		}
		
		public static void main(String[] args) {
			MyStack2<Integer> myStack2 = new MyStack2<>();		//创建一个栈
			myStack2.push(1);
			myStack2.push(2);
			myStack2.push(3);
			
			System.out.println(myStack2.pop());
			System.out.println(myStack2.pop());
			
			System.out.println(myStack2.peek());		//打印出栈顶数据,但是不进行出栈操作,数据任然在栈中
			System.out.println(myStack2.pop());			//继续出栈
			
			//myStack2.printStack();
		}
}

 

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值