Java实现栈和队列数据结构
需积分: 9 110 浏览量
更新于2024-09-10
收藏 19KB TXT 举报
"Java语言实现的栈和队列数据结构示例代码"
在这个Java代码示例中,我们有两个类:`Node` 和 `SqStack`。`Node` 类用于构建链表,代表了栈或队列中的元素节点,而 `SqStack` 类实现了基于数组的栈操作。
首先,`Node` 类具有以下几个属性和方法:
1. `data`: 用于存储节点数据的 `Object` 类型变量。
2. `next`: 指向下一个节点的引用,类型为 `Node`。
3. `Node()`:无参构造器,初始化 `data` 为 `null` 和 `next` 也为 `null`。
4. `Node(Object data)`:单参数构造器,仅设置 `data`,`next` 仍为 `null`。
5. `Node(Object data, Node next)`:双参数构造器,设置 `data` 和 `next`。
6. `getData()`:返回节点的 `data` 值。
7. `getNext()`:返回指向下一个节点的引用。
8. `setData(Object data)`:设置节点的 `data` 值。
9. `setNext(Node next)`:设置节点的 `next` 引用。
接下来是 `SqStack` 类,它实现了栈的基本操作:
1. `stackElem`:一个 `Object` 类型的数组,用于存储栈元素。
2. `top`:一个整型变量,表示栈顶的索引,初始值为0。
3. `SqStack(int maxSize)`:构造函数,传入最大容量 `maxSize` 初始化栈,并将 `top` 设置为0。
4. `pop()`:弹出栈顶元素。如果栈为空,返回 `null`;否则,返回并移除栈顶元素。
5. `push(Object e)`:压入栈顶元素。如果栈已满,抛出异常;否则,将 `e` 压入栈并更新 `top`。
6. `display()`:打印栈中的所有元素,从栈顶到栈底。
这个实现使用了数组作为基础结构,提供了基本的栈操作,如压栈(push)和弹栈(pop)。然而,对于队列的实现,通常需要两个指针,一个指向队首(front),另一个指向队尾(rear)。在提供的代码中并没有看到队列的实现,但你可以基于 `Node` 类构建链表队列,或者使用数组实现一个循环队列。
在实际应用中,Java集合框架提供了一些内置的数据结构,如 `Stack` 类(继承自 `Vector` 类)和 `Queue` 接口(有多种实现,如 `LinkedList`, `ArrayDeque` 等)。这些内置数据结构提供了更丰富的功能和性能优化。例如,`Stack` 类提供了 `push`, `pop`, `peek` 等方法,而 `Queue` 接口的实现类提供了 `offer`, `poll`, `peek` 等队列操作。
点击了解资源详情
点击了解资源详情
点击了解资源详情
2023-07-08 上传
2024-11-24 上传
2023-05-11 上传
2023-04-05 上传
2023-04-24 上传
2024-11-23 上传