java 单链表实现栈
package com.company;
public class Main {
//用链表模拟栈
public static void main(String[] args) {
// write your code here
LinkedStake ls = new LinkedStake(4);
ls.push("aa");
ls.push("aB");
ls.push("Ca");
ls.push("Da");
ls.toList();
System.out.println("++++++++++");
ls.pop();
System.out.println("______");
ls.toList();
System.out.println("__ssss____");
}
}
class Node {
public String val;
public Node next;
public Node(String str){
this.val = str;
}
}
class ArrayLinked{
public String val ;
public Node next;
//设置一个头节点
public Node head = new Node("");
public void add(String val){
if(head.next != null){
Node temp = head.next;
head.next = new Node(val);
head.next.next = temp;
}else{
head.next = new Node(val);
}
}
//getLast
public String pop(){
String val = "";
if(head.next != null){
val = head.next.val;
Node temp2 = head.next.next;
head.next = temp2;
}
return val;
}
public void toList(){
Node temp = head;
while(temp.next!= null){
System.out.printf(temp.next.val+"\t");
temp = temp.next;
}
}
}
class LinkedStake{
public ArrayLinked arrayLink = new ArrayLinked();
//设置栈的相关属性
public int top = -1;
public int maxSize;
//初始化
public LinkedStake(int size){
this.maxSize = size;
}
//栈满判断
public boolean isFull(){
return top ==maxSize-1;
}
//栈空判断
public boolean isEmpty(){
return top ==-1;
}
//添加push方法
public void push(String val){
//先判断栈满情况
if(isFull()){
System.out.println("栈满了");
//throw new RuntimeException("栈满了");
}else{
//在链表的头部第一个位置擦插入,因为第一个是最先访问到的
arrayLink.add(val);
top++;
}
}
//取出元素方法
public String pop() {
//先判断栈满情况
String value = "";
if (isEmpty()) {
System.out.println("栈空了");
} else {
//在链表的头部第一个位置擦插入,因为第一个是最先访问到的
top--;
value = arrayLink.pop();
}
return value;
}
public void toList(){
arrayLink.toList();
}
}
java 单链表实现栈的更多相关文章
- java 单链表 练习
练习一下java单链表的简单习题 package com.test1; import java.util.Stack; public class SingleListDemo { /** * 返回单链 ...
- Java单链表反转 详细过程
版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/guyuealian/article/details/51119499 Java单链表反转 Java实 ...
- Java单链表反转图文详解
Java单链表反转图文详解 最近在回顾链表反转问题中,突然有一些新的发现和收获,特此整理一下,与大家分享 背景回顾 单链表的存储结构如图: 数据域存放数据元素,指针域存放后继结点地址 我们以一条 N1 ...
- java实现单链表、栈、队列三种数据结构
一.单链表 1.在我们数据结构中,单链表非常重要.它里面的数据元素是以结点为单位,每个结点是由数据元素的数据和下一个结点的地址组成,在java集合框架里面 LinkedList.HashMap(数组加 ...
- java单链表常用操作
总结提高,与君共勉 概述. 数据结构与算法亘古不变的主题,链表也是面试常考的问题,特别是手写代码常常出现,将从以下方面做个小结 [链表个数] [反转链表-循环] [反转链表-递归] [查找链表倒数第K ...
- java 单链表反转
最近与人瞎聊,聊到各大厂的面试题,其中有一个就是用java实现单链表反转.闲来无事,决定就这个问题进行一番尝试. 1.准备链表 准备一个由DataNode组成的单向链表,DataNode如下: pub ...
- 9.java单链表初学代码复现及一些不值一提的小问题(2)
首先写完了update和delete函数,在之前的铺垫下.倒是不难,结构和之前的都相同,遍历找到节点后处理该节点.代码如下 public void update(teamNode node){ tea ...
- Java单链表、双端链表、有序链表实现
单链表: insertFirst:在表头插入一个新的链接点,时间复杂度为O(1) deleteFirst:删除表头的链接点,时间复杂度为O(1) 有了这两个方法,就可以用单链表来实现一个栈了,见htt ...
- java单链表代码实现
用惯了C++,java写起来果然不太爽...不废话了,上代码... package javaInnerclassDemo; class Link{ class Node{ private String ...
- JAVA单链表的实现-不带头结点但带有尾指针
1,本程序实现了线性表的链式存储结构.实现的链表带有两个指针,一个始终指向链表中的第一个结点,另一个指针始终指向链表中的最后一个结点. 之所以设置尾指针,是因为,在插入元素到链表中的末尾时,可以通过尾 ...
随机推荐
- Django项目实战:解除跨域限制
Django项目实战:解除跨域限制 在Web开发中,跨域资源共享(CORS)是一个重要的安全特性,它限制了网页只能与其同源的服务器进行交互.然而,在开发过程中,我们经常需要前端(如Vue.js.Rea ...
- 【Java基础总结】集合框架
集合和数组的区别 集合只存储对象,长度是可变的: 数组既可以存储基本数据类型,又可以存储对象,但长度是固定的. 1. Collection接口 代码演示 1 List<String> c1 ...
- 五分钟搞定!Linux平台上用Ansible自动化部署SQL Server AlwaysOn集群
五分钟搞定!Linux平台上用Ansible自动化部署SQL Server AlwaysOn集群 前言 以下内容是由红帽官方博客整理而成,使用Ansible在Linux平台上自动化部署SQL Serv ...
- 简单编写Makefile与使用make工具
简单编写Makefile与使用make工具 在不使用make工具下对c文件的编译 gcc main.c -o out gcc <目标文件> -o <生成执行文件> 编译到执行文 ...
- sql server 新建用户数据库授权
必须对数据库进行 db_owner 授权.
- MySQL - mysql 面试题
事务的四个特点是什么?他们的实现原理是什么? 事务的四个特点是ACID,即原子性(Atomicity).一致性(Consistency).隔离性(Isolation).持久性(Durability). ...
- Kubernetes - [04] 常用命令
kubectl 语法 kubectl [command] [TYPE] [NAME] [flags] command:指定在一个或多个资源商要执行的操作.例如:create.get.describe. ...
- 分享一个裁剪图片Chrome 扩展 —— Crop Image
1. 前言 在日常工作和设计过程中,我们常常需要对图片进行裁剪,以适配不同的使用场景.无论是社交媒体头像.网站图片优化,还是艺术设计,精确的图片裁剪都是必不可少的.然而,许多在线工具使用复杂,或者功能 ...
- go declared and not used
Go语言在代码规范中定义未使用的变量会报"declared and not used"错误 package main import "fmt" func mai ...
- VRRP+BFD实验
VRRP(Virtual Router Redundancy Protocol,虚拟路由器冗余协议)的工作原理主要涉及多个路由器(或具备路由功能的设备)协同工作,通过VRRP报文和优先级机制来选举出一 ...