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

本文介绍了栈这种后进先出的线性数据结构,详细阐述了栈的特性:后进先出、仅允许在栈顶进行操作。文章通过Java代码展示了栈的三种基本操作:push(入栈)、peek(查看栈顶元素)和pop(出栈)。并提供了测试类的实例输出。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

栈:

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

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

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

  • push – 向栈中添加元素。

  • peek – 返回栈顶元素。

  • pop – 返回并删除栈顶元素的操作。

图示如下(图片来源网路,侵删)

栈的结构示意图.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("栈的大小为:%d\n", 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());
	    }
  }
输出结果实例:

输出结果(文字纯属娱乐).png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值