数据结构栈的操作_数据结构||栈的基本操作(Java实现)

3e67d1d391f8fced0312a0385d7e7626.png

栈:

栈是一种后进先出的线性表数据结构,分为栈顶和栈底两端,仅允许在表的一端插入元素,这一端被称为栈顶,另外一端称之为栈底。栈,只有两种操作,分为入栈(压栈)和出栈(退栈);向栈中添加元素的操作叫做入栈,相反从栈中删除元素叫做出栈。

栈(stack),是一种线性存储结构,它有以下几个特点:

  • 栈中数据是按照"后进先出"方式进出栈的。
  • 向栈中添加/删除数据时,只能从栈顶进行操作。

栈通常包括的三种操作:push、peek、pop。

  • push -- 向栈中添加元素。
  • peek -- 返回栈顶元素。
  • pop -- 返回并删除栈顶元素的操作。

图示如下

70beac3014c319f353de73138420347e.png
(图片来源网路,侵删)

栈的基本操作(详细代码)

/**
 * 栈的基本操作
 * 
 * @author 晨曦
 *
 */
public class MyStack {
	private int Size;// 栈的大小
	private char[] arr;
	private int top;// 指向栈顶元素

	public MyStack(int size) {
		this.Size = size;
		this.arr = new char[Size];
		this.top = -1;
	}

	/**
	 * 压入数据
	 *
	 * @param value
	 */
	public void push(char value) {
		arr[++top] = value;
	}
	/**
	 * 返回栈顶元素
	 * @return
	 */
	public char peek() {
		return arr[top];
	}

	/**
	 * 出栈
	 * 
	 * @return
	 */
	public char pop() {
		if (isEmpty())
			throw new NullPointerException("此栈为空!!");
		return arr[top--];

	}

	/**
	 * 查看压入的栈的结果
	 * 
	 */
	public void print() {
		if (isEmpty()) {
			System.out.printf("此栈为空!!!");
		}

		System.out.printf("栈的大小为:%dn", Size);

		int i = Size - 1;
		while (i >= 0) {
			System.out.print(arr[i]);
			i--;
		}
	}

	/**
	 * 判断栈是否为空
	 * 
	 * @return
	 */
	public boolean isEmpty() {
		return (top == -1);
	}

	/**
	 * 判断栈是否已满
	 * 
	 * @return
	 */
	public boolean isFull() {
		return (top == Size - 1);
	}
}

接下来我们new一个测试类,调用上面的基本操作方法

public static void main(String[] args) {
		MyStack stack = new MyStack(30);
		stack.push('菜');
		stack.push('徐');
		stack.push('坤');
		stack.push(',');
		stack.push('鸡');
		stack.push('你');
		stack.push('太');
		stack.push('美');
		stack.push('!');
		stack.push(' ');
		stack.push('坤');
		stack.push('徐');
		stack.push('菜');
		stack.push('!');
		stack.push('美');
		stack.push('太');
		stack.push('你');
		stack.push('鸡');
		System.out.println("栈顶元素:");
		System.out.println(stack.peek());
		System.out.println("进栈结果:");
		stack.print();
		System.out.println(" ");
		
		System.out.println("出栈结果:");
		while (!stack.isEmpty()) {
			System.out.print(stack.pop());
	    }
  }

输出结果实例:

ba5b33c2957052ade294def9b0a072b1.png
输出结果(文字纯属娱乐)
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值