java负零_java数据结构从零基础到负基础
第一章 基础
1.3.32 栈与队列融合的数据结构:链表实现
1.接口public interface ISteque
{
/**
* 进栈
* @param val 进栈元素
*/
void push(T val);
/**
* 出栈元素
* @return 返回出栈元素
*/
T pop();
/**
* 进队
* @param val 进队元素
*/
void enter(T val);
/**
* 获取元素个数
* @return 返回元素个数
*/
int getCount();
/**
* 返回队列是否为空
* @return 队列是否为空
*/
boolean empty();
/**
* 获取队列头
* @return 返回队列头部元素
*/
T getFront();
/**
* 获取栈顶元素
* @return 返回栈顶
*/
T getTop();
}
2.实现/**
* 链队列栈:循环链表表示
*/
//(push/pop)[h,5,4,3,2,1,2,3](enter)
public class LinkSteque implements ISteque
{
/**
* 头节点
*/
private Node head;
/**
* 尾节点
*/
private Node p;
/**
* 元素个数
*/
private int count;
/**
* 构造函数
*/
public LinkSteque()
{
this.head=new Node();
this.head.next=head;
this.p=head;
}
@Override
public void push(T val)
{
var t=new Node(val,head.next);
this.head.next=t;
this.count++;
//保证尾节点始终指向链表尾
if(this.count==1)
this.p=t;
}
@Override
public T pop()
{
if(this.empty())
throw new IndexOutOfBoundsException("队列空!");
var t=this.head.next;
var val=t.data;
this.head.next=t.next;
this.count--;
//空表的情况指向head就可以了
if(this.count==0)
this.p=this.head;
return val;
}
@Override
public void enter(T val)
{
var t=new Node(val,p.next);
p.next=t;
p=t;
this.count++;
}
@Override
public int getCount()
{
return this.count;
}
@Override
public boolean empty()
{
return this.count==0;
}
@Override
public T getFront()
{
if(this.empty())
throw new IndexOutOfBoundsException("队列空!");
return this.p.data;
}
@Override
public T getTop()
{
if(this.empty())
throw new IndexOutOfBoundsException("队列空!");
return this.head.next.data;
}
}
java负零_java数据结构从零基础到负基础相关推荐
- java类图_java UML类图的使用-UML基础-火龙果软件工程
类图 是用于描述系统中所包含的类以及它们之间的相互关系,帮助人们简化对系统的理解,它是系统分析和设计阶段的重要产物,也是系统编码和测试的重要模型依据.学习好类图的绘制,是一位合格的软件工程师应有的技能 ...
- java链表模型_Java数据结构和算法(七)——链表
前面博客我们在讲解数组中,知道数组作为数据存储结构有一定的缺陷.在无序数组中,搜索性能差,在有序数组中,插入效率又很低,而且这两种数组的删除效率都很低,并且数组在创建后,其大小是固定了,设置的过大会造 ...
- java 头尾 队列_Java数据结构之队列(动力节点Java学院整理)
队列的定义: 队列(Queue)是只允许在一端进行插入,而在另一端进行删除的运算受限的线性表. (1)允许删除的一端称为队头(Front). (2)允许插入的一端称为队尾(Rear). (3)当队列中 ...
- java 数据队列_Java 数据结构 - 队列
Java 数据结构 - 队列 我们今天要讲的数据结构是队列,比如 Java 线程池任务就是队列实现的. 1. 什么是队列 和栈一样,队列也是一种操作受限的线性结构.使用队列时,在一端插入元素,而在另一 ...
- java link 使用_Java数据结构之简单的连接点(link)实现方法示例
本文实例讲述了Java数据结构之简单的连接点(link)实现方法.分享给大家供大家参考,具体如下: 一.概述: 链接点由:数据和指向下个数据的指针构成 如图: 二.简单实现: package com. ...
- java自学语法_Java自学笔记(一):基础知识
目录 第一个Java程序 public class HelloWorld { //类名必须与文件名相同 public static void main(String[] args) { System. ...
- java 链表算法_JAVA数据结构与算法之链表(一)
单项链表 链表介绍: 链表是有序的列表,但是它在内存中是存储如下 1)链表是以节点的方式来存储, 是链式存储 2) 每个节点包含 data 域, next 域:指向下一个节点. 3) 如图:发现 链表 ...
- java邻接图_Java数据结构 - 图(邻接表存储)
邻接表 相比邻接矩阵,邻接表要更加节省空间. 邻接表存储 本文将介绍邻接表存储有向带权图.图的例子如下. 图 介绍一下邻接表 上面的图对应的邻接表如下图所示: 邻接表 前面的数组存储的是所有的顶点,每 ...
- java零基础Ⅲ-- 4.Mysql基础
java零基础Ⅲ-- 4.Mysql基础 MySQL安装配置 MySQL数据库的安装和配置 软件下载 特别说明 安装步骤 使用命令行窗口连接MYSQL数据库 Navicat 安装和使用 介绍:图形化M ...
最新文章
- Android实例-手机震动(XE8+小米2)
- 西南联大数学名师的“治学经验之谈”及启示
- mysql 按月建表_MySQL之存储过程按月创建表
- python 插值_有序点列的样条插值
- [framework] debuging
- using namespace cv
- extjs fileuploadfield default value
- string equals java_Java equals比较方法(Java StringEquals)
- 智芯传感ZXP4系列侵袭式压力传感器 为医疗器械智能升级注入新动能
- linux vim编辑矩阵乘,VIM使用系列:二进制文件编辑
- 光盘重装linux系统教程视频,重装系统?一步一步安装系统详细教程【带视频】。...
- 深圳市自助图书馆详细分布地址
- [CV]光场和它的各种
- Startup is Ready,Geek to Startup!
- Codeforces 1129 E.Legendary Tree
- 生成对抗网络 – Generative Adversarial Networks | GAN
- 张一鸣这条微博,就……有点害人不浅
- 离心泵CAE_1_CFturbo离心泵水力设计
- qq浏览器打开word 技术原理_实操:QQ群排名技术原理
- linux上搭建pppoe服务器,linux(centos)上搭建pppoe服务器
热门文章
- linux环境根据pid查看堆栈大小,linux - 通过PID获取过程的机器代码,而无需附加调试器 - 堆栈内存溢出...
- 一台mysql数据库服务器_在一台服务器安装多个MySQL数据库
- 400是什么错误_我想对您说小学作文400字7篇
- USTB自习教室查询系统-项目计划书-第二部分
- HAOI(十二省联考)2019 qwq记
- eureka集群基于DNS配置方式
- bzoj 4094: [Usaco2013 Dec]Optimal Milking
- 利用stringBuilder操作html文件
- 转:c# 安装包制作
- 趣味思考--苹果剩余最大量