顺序栈,链栈,队列java实现
顺序栈
/**
* 顺序栈
* */
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实现的更多相关文章
- java与数据结构(6)---java实现链栈
栈之链式存储结构链栈 链栈 栈的链式存储结构成为链栈.链栈是没有头结点,头结点就是栈顶指针top. 代码结构 package list; public interface Stackable;公共接口 ...
- 栈(存储结构链表)--Java实现
/*用链表实现栈--链栈 * */ public class MyLinkedStack { public MyLinkedList linklist; int items; public MyLin ...
- c/c++ 链栈
c/c++ 链栈 链栈 下面的代码实现了以下功能 函数 功能描述 push 压入 pop 弹出 show_list 打印 clear 释放所有内存空间 destroy 释放所有内存空间 nodesta ...
- 【Java】 大话数据结构(6) 栈的顺序与链式存储
本文根据<大话数据结构>一书,实现了Java版的栈的顺序存储结构.两栈共享空间.栈的链式存储机构. 栈:限定仅在表尾进行插入和删除操作的线性表. 栈的插入(进栈)和删除(出栈)操作如下图所 ...
- 数据结构Java实现07----队列:顺序队列&顺序循环队列、链式队列、顺序优先队列
一.队列的概念: 队列(简称作队,Queue)也是一种特殊的线性表,队列的数据元素以及数据元素间的逻辑关系和线性表完全相同,其差别是线性表允许在任意位置插入和删除,而队列只允许在其一端进行插入操作在其 ...
- 2018.9.5 Java中使用栈来模拟队列
栈的规律是是先进后出 队列的规律是先进先出 栈模拟队列 首先我们定义两个栈,一个放数据,一个出数据,判断B栈是否有元素,有元素则直接pop:没有元素则需要我们将A里面的元素出栈然后放到B里面,再取出, ...
- JAVA:使用栈实现一个队列
使用栈实现一个队列,需要弄清楚栈和队列的区别: 栈:先进后出: 队列:先进先出. 实现思路: 1)通过两个栈(pushStack / popStack)对倒,确保 popStack 栈的出栈顺序与队列 ...
- (超详细)动手编写 — 栈、队列 ( Java实现 )
目录 前言 栈 概念 栈的设计 编码实现 小结 队列 概念 队列的设计 编码实现 双端队列 概念 设计 编码 循环队列 循环队列 循环双端队列 声明 前言 栈 概念 什么是栈? **栈 **:是一种特 ...
- 数据结构——Java实现链栈
一.分析 栈是限定仅在表的一端进行插入或删除操作的线性表,对于栈来说,操作端称为栈顶,另一端则称为栈底,栈的修改是按照后进先出的原则进行的,因此又称为后进先出的线性表. 链栈是指采用链式存储结构实现的 ...
随机推荐
- springboot 整合 mybatis
spirngboot 整合mybatis有两种方式 第一种 无配置文件注解版,这一种符合springboot的风格 第二种 有配置文件xml版本,这一种就是传统的模式 无论哪一种,首先都需要加入MyS ...
- 每月IT摘录201903
技术 1.在开发高并发系统时,有很多手段来保护系统,如缓存.降级.限流等.缓存可以提升系统的访问速度,降级可以暂时屏蔽掉非核心业务,使得核心业务不受影响.限流的目的是通过对并发访问进行限速,一旦达到一 ...
- 10. Regular Expression Matching (JAVA)
Given an input string (s) and a pattern (p), implement regular expression matching with support for ...
- 考研结束,重返python
因为考研的原因,python的学习告一段落,现在考验终于结束了,也抓眼又到了新的一年.新的一年里也要继续加油啊.python学习之路还要继续下去,但是毕竟有将近半年没有鹏编程了,首先我还是需要好好的复 ...
- 13. pt-ioprofile
pt-ioprofile 直接运行即可,对系统有影响,慎用!!! read:从文件中读出数据.要读取的文件用文件描述符标识,数据读入一个事先定义好的缓冲区. write:把缓冲区的数据写入文件中. p ...
- 全渠道java b2b b2c o2o平台
大型企业分布式互联网电子商务平台,推出PC+微信+APP+云服务的云商平台系统,其中包括B2B.B2C.C2C.O2O.新零售.直播电商等子平台. 根据微服务化设计思想,结合spring cloud一 ...
- 提交操作自动遮蔽实现之ajax
有时候,我们期望一些提交操作自动增加遮蔽效果,提交成功时自动去除遮蔽. 方案: 1. 提交前增加遮蔽逻辑,成功后增加去除遮蔽逻辑,但是不够智能 2.通过ajax拦截,实现自动添加\去除遮蔽效果 aja ...
- lamp环境搭建(apache安装,mysql安装,php安装)
1.卸载系统内置的LAMP环境 1)卸载httpd服务(内置Apache) ① 使用rpm指令查询安装的httpd服务 ② 卸载httpd服务 如果出现以上提示,代表系统默认不允许我们卸载软件,使用强 ...
- Java流程控制语句
流程控制语句 内容: if... if...else if...else if...else switch...case for while do...while 分支结构if 接下来要学习的if条件 ...
- quick-cocos2d-x lua框架解析(一)对UI进行操作的UiUtil脚本
最近一段时间接手了一个cocos游戏项目,由于我是U3D开发入门,所以花了一段时间来钻研cocos2d的使用与项目架构.与U3D相比,cocos2d的开发界面实在做的不咋地.不过在看过源码之后,源码跑 ...