《大话数据结构》第四章栈与队列

本文介绍了栈这种数据结构的基本概念,包括栈的定义、特点、以及栈的基本操作,如入栈、出栈等,并详细解释了如何使用数组来实现栈的数据结构。

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

1.栈是限定仅在表尾进行插入和删除的线性表

允许插入和删除的一端称为栈顶,另一端称为栈底,不含任何元素的栈称为空栈,栈又称为后进先出的线性表,简称LIFO结构。

1.1 栈的插入操作,叫做进栈,也称压栈,入栈。子弹如弹夹

栈的删除操作,叫做出栈。子弹弹出弹夹

1.2 先进栈的元素是不是只能最后出栈?

答案不一定,如果有3个元素,有5种可能的出栈顺序。

1.3 栈的顺序存储结构和实现

1.3.1 用数组实现栈,下标为0的一端作为栈底较好,大头做栈顶,因为经常要做插入和取出的操作。

1.3.2 我们用一个top的变量指示栈顶元素在数组中得位置,当栈只有一个元素时,top等于0,空栈的top=-1。

1.3.3 栈的结构定义

见后面实现代码

1.3.4 若有一个栈,StackSize是5,请看下图


1.3.5 栈的顺序存储结构——各种操作实现

public class StackDemo { public static void main(String[] args) { Stack stack = new Stack(5); stack.initStack(); } } class Stack { private int[] data = null; private int capacity; // 栈的容量 private int top; // 栈顶指针 public Stack(int capacity) { this.capacity = capacity; } /* * 初始化栈 */ public void initStack() { data = new int[capacity]; top = -1; } /* * 入栈 */ public String push(int element) { if (top == capacity - 1) { return "ERROR, 栈满"; } // 先top加1,然后再插入值 top++; data[top] = element; return "SUCCESS"; } /* * 出栈 */ public int pop() { if (top == -1) { return -1; // 空栈返回-1 } // 先top减1,然后再返回值 int temp = top; top--; return data[temp]; } /* * 栈元素个数 */ public int stackLength() { if (top == -1) { return 0; } return top + 1; } /* * 判断栈是否为空 */ public boolean isEmpty() { if (top == -1) { return true; } return false; } // 栈置为空 public void clear() { this.top = -1; } /* * 从栈底开始打印所有元素 */ public void print() { for (int i : data) { System.out.print(i + " "); } } }



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值