顺序栈

/**
* 顺序栈
* */
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. java中的throw、throws和try catch浅析

    今天在公司和同事聊天的时候,突然发现自己对java中的throw.throws和try catch的作用理解不够准确,在网上查了查,在此大概梳理一下. throw用于抛出异常,例如 throw new ...

  2. linux用户和组管理,/etc/passwd 、/etc/shadow和/etc/group --学习

    一./etc/passwd 和/etc/shadow解释 与用户相关的系统配置文件主要有/etc/passwd 和/etc/shadow,其中/etc/shadow是用户资讯的加密文件,比如用户的密码 ...

  3. 激活prompt

    1.下载SQLPrompt 2. 断网, 打开注册机,拷贝验证码 2. 点击activate, 拷贝代码

  4. Socket 多线程编程

    前面一片学习了TCP/IP的基础网络编程,并给出了简单的服务端与客户端通信交互的例子.还介绍了UPC的通信例子. 这次学习TCP/IP的多线程编程.因为涉及到TCP/IP一般都是多线程,服务端会一直监 ...

  5. dtruss

    一.简介 系统调用跟踪工具.   二.实例

  6. python之全局变量和局部变量

    一.定义 1.全局变量 定义在函数外部一级代码的变量,叫全局变量,全局能用. 2.局部变量 定义在函数内的变量,只能在局部生效 二.用法 1.在函数内部可以引用全局变量,如果全局和局部都有一个变量na ...

  7. linux 查看机器cpu核数

    CPU总核数 = 物理CPU个数 * 每颗物理CPU的核数 总逻辑CPU数 = 物理CPU个数 * 每颗物理CPU的核数 * 超线程数 查看CPU信息(型号) [root@AAA ~]# cat /p ...

  8. ABP框架系列之四:(Repositories-仓库)

    "Mediates between the domain and data mapping layers using a collection-like interface for acce ...

  9. 12. The Biggest Safety Threat Facing Airlines 航空公司面临的最大安全威胁

    12. The Biggest Safety Threat Facing Airlines 航空公司面临的最大安全威胁 (1) The biggest safety threat facing air ...

  10. Codeforces Round #548 (Div. 2) C dp or 排列组合

    https://codeforces.com/contest/1139/problem/C 题意 一颗有n个点的树,需要挑选出k个点组成序列(可重复),按照序列的顺序遍历树,假如经过黑色的边,那么这个 ...