顺序栈

/**
* 顺序栈
* */
public class SqStack {
//栈的大小
private int maxSize;
//栈顶指针
private int top; private char[] stack; public SqStack(int size){
maxSize = size;
top = -1;
stack = new char[maxSize];
}
//压栈
public void push(char value){
stack[++top] = value;
}
//出栈
public char pop(){
return stack[top--];
}
//返回栈顶指针
public char peek(){
return stack[top];
}
//栈是否满
public boolean idFull(){
return maxSize-1==top;
}
//栈是否为空
public boolean isEmpty(){
return top==-1;
}
}

  

测试

SqStack sqStack = new SqStack(10);
sqStack.push('a');
sqStack.push('b');
System.out.println(sqStack.pop());
System.out.println(sqStack.pop());

  

输出

链栈

import sun.awt.image.ImageWatched;

/**
* 链栈
* */
public class LinkStack {
/**
* @param size 栈的大小
* @param top 栈顶指针
* */
private int size;
private Node top =null; class Node{
int data;
Node next = null;
public Node(int data){
this.data = data;
}
} /**
* 压栈
* @param data 节点数据
* */
public void push(int data){
Node node = new Node(data);
node.next = top;
top = node;
size++;
} /**
* 出栈
* */
public int pop()throws Exception{
if(top==null)
throw new Exception("空的");
else {
int data = top.data;
top = top.next;
size--;
return data;
}
}
public int getSize(){
return size;
}
public boolean isEmpty(){
return size==0;
}
public void showAllNode() throws Exception{
if(top==null)
throw new Exception("空栈");
else {
Node node = top;
while (node!=null){
System.out.println(node.data);
node = node.next;
}
}
}
}

  

测试

LinkStack stack = new LinkStack();
stack.push(2);
stack.push(3);
stack.showAllNode();

  

结果

 队列

点类

public class Node<T> {
//存储的数据
private T data;
//下一个节点
private Node<T> next; public Node(T data){
this.data = data;
} public T getData() {
return data;
} public void setData(T data) {
this.data = data;
} public Node<T> getNext() {
return next;
} public void setNext(Node<T> next) {
this.next = next;
}
}

  

队列类

public class LinkQuene {
//头
private Node<Integer> front;
//尾
private Node<Integer> rear;
//大小
private int size; /**
* 创建队列
* */
public LinkQuene(){
front = rear = null;
}
/**
* 入列
* @param data 节点数据
* */
public void enter(Integer data){
Node<Integer> node = new Node<>(data);
if(isEmpty()){
front = rear = node;
}else{
rear.setNext(node);
rear = node;
}
size++;
}
/**
* 出列
* */
public Integer out(){
Node node = new Node(-1);
if(isEmpty()){
System.out.println("队列是空的");
return (Integer) node.getData();
}else {
node = front;
front = node.getNext();
node.setNext(null);
size--;
}
if(size==0){
front = null;
rear = null;
}
return (Integer) node.getData();
} /**
* 判断是否为空
* */
public boolean isEmpty(){
return front==null&&rear==null?true:false;
}
/**
* 得到个数
* */
public int getSize(){
return this.size;
}
}

  

测试:

LinkQuene quene = new LinkQuene();
quene.enter(1);
quene.enter(2);
System.out.println(quene.getSize());
System.out.println(quene.out());
System.out.println(quene.getSize());

  

结果

顺序栈,链栈,队列java实现的更多相关文章

  1. java与数据结构(6)---java实现链栈

    栈之链式存储结构链栈 链栈 栈的链式存储结构成为链栈.链栈是没有头结点,头结点就是栈顶指针top. 代码结构 package list; public interface Stackable;公共接口 ...

  2. 栈(存储结构链表)--Java实现

    /*用链表实现栈--链栈 * */ public class MyLinkedStack { public MyLinkedList linklist; int items; public MyLin ...

  3. c/c++ 链栈

    c/c++ 链栈 链栈 下面的代码实现了以下功能 函数 功能描述 push 压入 pop 弹出 show_list 打印 clear 释放所有内存空间 destroy 释放所有内存空间 nodesta ...

  4. 【Java】 大话数据结构(6) 栈的顺序与链式存储

    本文根据<大话数据结构>一书,实现了Java版的栈的顺序存储结构.两栈共享空间.栈的链式存储机构. 栈:限定仅在表尾进行插入和删除操作的线性表. 栈的插入(进栈)和删除(出栈)操作如下图所 ...

  5. 数据结构Java实现07----队列:顺序队列&顺序循环队列、链式队列、顺序优先队列

    一.队列的概念: 队列(简称作队,Queue)也是一种特殊的线性表,队列的数据元素以及数据元素间的逻辑关系和线性表完全相同,其差别是线性表允许在任意位置插入和删除,而队列只允许在其一端进行插入操作在其 ...

  6. 2018.9.5 Java中使用栈来模拟队列

    栈的规律是是先进后出 队列的规律是先进先出 栈模拟队列 首先我们定义两个栈,一个放数据,一个出数据,判断B栈是否有元素,有元素则直接pop:没有元素则需要我们将A里面的元素出栈然后放到B里面,再取出, ...

  7. JAVA:使用栈实现一个队列

    使用栈实现一个队列,需要弄清楚栈和队列的区别: 栈:先进后出: 队列:先进先出. 实现思路: 1)通过两个栈(pushStack / popStack)对倒,确保 popStack 栈的出栈顺序与队列 ...

  8. (超详细)动手编写 — 栈、队列 ( Java实现 )

    目录 前言 栈 概念 栈的设计 编码实现 小结 队列 概念 队列的设计 编码实现 双端队列 概念 设计 编码 循环队列 循环队列 循环双端队列 声明 前言 栈 概念 什么是栈? **栈 **:是一种特 ...

  9. 数据结构——Java实现链栈

    一.分析 栈是限定仅在表的一端进行插入或删除操作的线性表,对于栈来说,操作端称为栈顶,另一端则称为栈底,栈的修改是按照后进先出的原则进行的,因此又称为后进先出的线性表. 链栈是指采用链式存储结构实现的 ...

随机推荐

  1. openvpn显示连接成功但是无法进行git操作

    使用openvpn连接公司内网以进行git操作.以管理员身份运行openvpn gui,一段时间后提示连接成功,右下角图标变成绿色,但是进行git操作,每次都发生失败,提示连接不上.右键点击openv ...

  2. CentOS7 Failed to start LSB: Bring up/down networking.解决方法

    https://www.cnblogs.com/bonjov1/p/4323836.html CentOS7 Failed to start LSB: Bring up/down networking ...

  3. jmeter 如何发送上传文件接口请求

    1.上传图片接口,通过抓包工具获取接口相关信息,然后在信息头里添加Content-Disposition:form-data; name="imgType" 2.在请求中MIME类 ...

  4. 3H - 进制转换

    输入一个十进制数N,将它转换成R进制数输出. Input 输入数据包含多个测试实例,每个测试实例包含两个整数N(32位整数)和R(2<=R<=16, R<>10). Outpu ...

  5. hbase-基础架构

    介绍 hbase架构主要由hmaster,zookeeper和regionserver三部分构成,底层数据存储在hdfs中 hmaster 允许有多个master节点,使用zookeeper控制,保证 ...

  6. Python之ftp服务器

    今天把做的ftp服务器过程总结一下,先看看要求 一.需求 1. 用户加密认证 2. 允许同时多用户登录 3. 每个用户有自己的家目录 ,且只能访问自己的家目录 4. 对用户进行磁盘配额,每个用户的可用 ...

  7. PHPNow升级PHP版本

    PHPNow升级PHP版本 phpnow下载地址:http://www.jb51.net/softs/12868.html 1,先把PHP5.3.5下载下来,在官网我是没找到VC6的版本,只能从Goo ...

  8. 教你轻松快速学会用Calibre TXT转MOBI

    教你轻松快速学会TXT转为有目录的MOBI###授人以渔,lllll5500制作### 需使用软件按先后顺序如下:一.排版助手 官网http://www.gidot.net/typesetter/二. ...

  9. 一不注意,在Unity3D中DllImport 引起的Bug.

    单要说这个Bug是很简单,但是得从头说起. 一些大型的网络游戏,或者加载比较多的一些场景时,如果要等待所有模型,贴图等各种资源文件加载完毕才能执行游戏,对用户将会是一个很头大的事情.所以就需要用到动态 ...

  10. # 2019-2020-3 《Java 程序设计》第五周学习总结

    2019-2020-3 <Java 程序设计>第五周知识总结 1.使用interface来定义一个接口.接口定义同类的定义类似,也是分为接口的声明和接口体,其中接口体由常量定义和方法定义两 ...