使用单向链表实现栈的相关操作【1.2】

创建节点:

class StackNode {private StackNode next;private int no;public StackNode getNext() {return next;}public void setNext(StackNode next) {this.next = next;}public StackNode(int no) {this.no = no;}public int getNo() {return no;}public void setNo(int no) {this.no = no;}@Overridepublic String toString() {return "StackNode{" + "no =" + no +'}';}
}

创建单链表:

class SingleLinkedStack {private StackNode head = new StackNode(0);private int maxsize;public SingleLinkedStack(int maxsize) {this.maxsize = maxsize;}//判断栈中总共有多少元素public int size() {StackNode temp = head.getNext();if (isEmpty()) {return 0;}int length = 1;while (temp.getNext() != null) {length++;temp = temp.getNext();}return length;}//判断是否栈空public boolean isEmpty() {return head.getNext() == null;}//判断是否栈满public boolean isFull() {return maxsize == size();}//入栈操作public void push(StackNode newNode) {StackNode temp = head; //将临时指针指向头节点if (isFull()) {System.out.println("栈满,不能继续添加元素");return;}while (temp.getNext() != null) {temp = temp.getNext();}System.out.printf("元素 %d 入栈\n", newNode.getNo());temp.setNext(newNode);}//出栈操作public void pop() {StackNode temp = head; //将临时指针指向头节点StackNode next = head.getNext(); //将临时指针指向第一个元素System.out.println("元素出栈操作...");if (isEmpty()) {System.out.println("栈空,无可用元素出栈");return;}while (next.getNext() != null) {//将两个指针同步向后移动temp = temp.getNext();next = next.getNext();}System.out.printf("元素 %d 出栈\n", next.getNo());temp.setNext(null);}//打印栈元素public void StackShow() {StackNode temp = head.getNext(); //将临时指针指向第一个元素System.out.println("======栈元素打印(入栈顺序)=====");if (isEmpty()) {System.out.println("栈空,无可用元素打印");}while (temp != null) {System.out.printf("元素 %d \n", temp.getNo());temp = temp.getNext();}}//逆序打印栈中元素public void reverseShow1() {Stack<StackNode> stackTemp = new Stack<StackNode>();if (isEmpty()) {System.out.println("栈空,无元素打印~");}StackNode temp = head.getNext();System.out.println("======逆序输出栈元素======");while (temp != null) {stackTemp.push(temp);temp = temp.getNext();}while (stackTemp.size() > 0) {System.out.printf("元素 %d \n", stackTemp.pop().getNo());}}}

测试:

public class ArrayStackDemo3 {public static void main(String[] args) {//测试SingleLinkedStack stack = new SingleLinkedStack(4);//创建新节点StackNode node1 = new StackNode(1);StackNode node2 = new StackNode(2);StackNode node3 = new StackNode(3);StackNode node4 = new StackNode(4);StackNode node5 = new StackNode(5);//入栈stack.push(node1);stack.push(node2);stack.push(node3);stack.push(node4);stack.push(node5);//打印元素stack.StackShow();//逆向打印栈元素stack.reverseShow1();
//        stack.reverseShow2();//出栈stack.pop();stack.pop();stack.pop();stack.pop();stack.pop();}
}

控制台输出:

相关文章:使用数组实现栈的相关操作

                  使用双向链表实现栈的相关操作

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/285941.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Day65力扣打卡

打卡记录 寻找峰值 II&#xff08;二分&#xff09; 链接 class Solution:def findPeakGrid(self, mat: List[List[int]]) -> List[int]:l, r 0, len(mat) - 1while l < r:mid (l r) // 2mx max(mat[mid])if mx > mat[mid 1][mat[mid].index(mx)]:r midelse:l…

linux搭建gitlab

gitlab的介绍 区别于github&#xff0c;github是面向互联网基于git实现的代码托管平台&#xff0c;gitlab是基于Ruby语言实现的git管理平台软件&#xff0c;一般用于公司内部代码仓库。 gitlab组成 gitlab组成 Nginx 静态Web服务器Gitlab-workhorse 轻量级的反向代理服务器Git…

五年一贯专转本这么管用的记忆法你用了吗?

在枯燥无聊的学习当中&#xff0c;能有好的学习记忆方式就能事半功倍&#xff0c;但是怎样的学习记忆方式才适合我们呢&#xff1f;那我今天就给大家介绍一下吧&#xff0c;如果觉得好用&#xff0c;可以试试&#xff0c;让我们在之后的转本考试当中能有个好成绩&#xff01;zb…

R10在工业自动化-485转WiFi无线路由解决方案

R10是钡铼技术有限公司研发的一款用于工业自动化应用的485转WiFi无线路由器解决方案。该解决方案可以将传统的RS485通信设备无线化&#xff0c;实现数据的远程监控和管理。下面将详细介绍R10在工业自动化中的应用。 首先&#xff0c;R10具备RS485转WiFi的功能&#xff0c;可以…

Apache CouchDB 垂直权限绕过漏洞 CVE-2017-12635 已亲自复现

Apache CouchDB 垂直权限绕过漏洞 CVE-2017-12635 已亲自复现 漏洞名称影响版本影响版本 漏洞复现环境搭建漏洞利用 总结 漏洞名称 影响版本 Apache CouchDB是一个开源的NoSQL数据库&#xff0c;专注于易用性和成为“完全拥抱web的数据库”。它是一个使用JSON作为数据存储格式…

uni-app 用于开发H5项目展示饼图,使用ucharts 饼图示例

先下载ucharts H5示例源码&#xff1a; uCharts: 高性能跨平台图表库&#xff0c;支持H5、APP、小程序&#xff08;微信小程序、支付宝小程序、钉钉小程序、百度小程序、头条小程序、QQ小程序、快手小程序、360小程序&#xff09;、Vue、Taro等更多支持canvas的框架平台&#…

前端开发新趋势:Web3、区块链和虚拟现实

目录 前言 Web3&#xff1a;下一代互联网 区块链技术 去中心化应用程序&#xff08;DApps&#xff09; 区块链&#xff1a;重塑数字世界 数字钱包 NFT&#xff08;非同质化代币&#xff09; 虚拟现实&#xff1a;沉浸式体验 WebVR和WebXR 三维图形 新挑战与机会 性…

Java数据结构--List、Set和Map

一、概述 数组 数组存储区间是连续的&#xff0c;占用内存严重&#xff0c;故空间复杂的很大。但数组的二分查找时间复杂度小&#xff0c;为O(1)&#xff1b;数组的特点是&#xff1a;寻址容易&#xff0c;插入和删除困难&#xff1b; 链表 链表存储区间离散&#xff0c;占用内…

install cuda cudnn tersorRT

1, dark view 2,470-server cant install 11.4 3,cuda.run and tensorRT.dpkg cant # 安装 $ ubuntu-drivers devices$ sudo apt-get install nvidia-driver-470-server # 推荐是server&#xff0c;都可以。#delelt sudo apt --purge remove nvidia-* CUDA Toolkit Archiv…

测试工具Jmeter:设置中文界面

首先我们打开Jmeter所在的文件&#xff0c;进入bin目录&#xff0c;打开Jmeter.properties&#xff1a; 打开后找到languageen&#xff1a; 改为zh_CN: 保存关闭&#xff0c;然后再打开Jmeter&#xff1a; 英文并不会显得高级&#xff0c;能做到高效的性能测试才是高级的。

ClickHouse Kafka 引擎教程

如果您刚开始并且第一次设置 Kafka 和 ClickHouse 需要帮助怎么办&#xff1f;这篇文章也许会提供下帮助。 我们将通过一个端到端示例&#xff0c;使用 Kafka 引擎将数据从 Kafka 主题加载到 ClickHouse 表中。我们还将展示如何重置偏移量和重新加载数据&#xff0c;以及如何更…

python调用staf自动化框架的方法

1、配置环境 支持python2和python3 On Linux, Solaris, or FreeBSD, add the /usr/local/staf/lib directory to your PYTHONPATH, assuming you installed STAF to directory /usr/local/staf. For example: export PYTHONPATH/usr/local/staf/lib:$PYTHONPATH On Mac OS …