数据结构与算法分析java——栈和队列
1. 栈

1.1 分类
顺序栈:顺序线性表实现
链式栈:单向链表存储堆栈
1.2栈的应用
1)数制转换

import java.util.Scanner;
import java.util.Stack;
public class Tran{
public static void main(String arg[]){
Scanner y=new Scanner(System.in);
System.out.println("请输入十进制数");
int b=y.nextInt();
Tran j=new Tran();
j.ErJinZhi(b);
j.BaJinZhi(b);
j.ShiLiuJinZhi(b);
}
//转化成二进制
void ErJinZhi(int a){
Stack<Integer> s=new Stack<Integer>();
String str="";
while(a>0)
{
s.push(a%2);
a=a/2;
}
while(!s.isEmpty()){
str=str+s.pop();
}
System.out.println("二进制是"+str);
}
//转化成八进制
void BaJinZhi(int a){
Stack<Integer> s=new Stack<Integer>();
String str="";
while(a>0)
{
s.push(a%8);
a=a/8;
}
while(!s.isEmpty()){
str=str+s.pop();
}
System.out.println("八进制是"+str);
}
//转化成十六进制
void ShiLiuJinZhi(int a){
int c=0;
String str="";
Stack<Character> s=new Stack<Character>();
while(a>0)
{
c=a%16;
switch(c){
case(10):s.push('A');break;
case(11):s.push('B');break;
case(12):s.push('C');break;
case(13):s.push('D');break;
case(14):s.push('E');break;
case(15):s.push('F');break;
default:s.push((char)(a%16+48));
}
a=a/16;
}
while(!s.isEmpty()){
str=str+s.pop();
}
System.out.println("十六进制是"+str);
}
}
2)表达式的转换
中缀表达式: a+b*c ; 前缀表达式: +a*bc; 后缀表达式: acb*+

参考: http://blog.csdn.net/antineutrino/article/details/6763722/
3)递归
4)递归的非递归实现
2. 队列
2.1 队列基本操作

2.2 顺序队列 和链式队列
3. Stack类

import java.util.*;
public class StackDemo {
static void showpush(Stack st, int a) {
st.push(new Integer(a));
System.out.println("push(" + a + ")");
System.out.println("stack: " + st);
}
static void showpop(Stack st) {
System.out.print("pop -> ");
Integer a = (Integer) st.pop();
System.out.println(a);
System.out.println("stack: " + st);
}
public static void main(String args[]) {
Stack st = new Stack();
System.out.println("stack: " + st);
showpush(st, 42);
showpush(st, 66);
showpush(st, 99);
showpop(st);
showpop(st);
showpop(st);
try {
showpop(st);
} catch (EmptyStackException e) {
System.out.println("empty stack");
}
}
}
stack: [ ]
push(42)
stack: [42]
push(66)
stack: [42, 66]
push(99)
stack: [42, 66, 99]
pop -> 99
stack: [42, 66]
pop -> 66
stack: [42]
pop -> 42
stack: [ ]
pop -> empty stack
数据结构与算法分析java——栈和队列的更多相关文章
- java实现 数据结构:链表、 栈、 队列、优先级队列、哈希表
java实现 数据结构:链表. 栈. 队列.优先级队列.哈希表 数据结构javavector工作importlist 最近在准备找工作的事情,就复习了一下java.翻了一下书和网上的教材,发现虽然 ...
- 《数据结构与算法分析-Java语言描述》 分享下载
书籍信息 书名:<数据结构与算法分析-Java语言描述> 原作名:Data Structures and Algorithm Analysis in Java 作者: 韦斯 (Mark A ...
- Java数据结构和算法之栈与队列
二.栈与队列 1.栈的定义 栈(Stack)是限制仅在表的一端进行插入和删除运算的线性表. (1)通常称插入.删除的这一端为栈顶(Top),另一端称为栈底(Bottom). (2)当表中没有元素时称为 ...
- 数据结构与算法分析java——线性表1
说到线性结构的话,我们可以根据其实现方式分为三类: 1)顺序结构的线性表 2)链式结构的线性表 3)栈和队列的线性表 应用程序后在那个的数据大致有四种基本的逻辑结构: 集合:数据元素之间只有&qu ...
- 读书笔记:《数据结构与算法分析Java语言描述》
目录 第 3 章 表.栈和队列 3.2 表 ADT 3.2.1 表的简单数组实现 3.2.2 简单链表 3.3 Java Collections API 中的表 3.3.1 Collection 接口 ...
- 用JS描述的数据结构及算法表示——栈和队列(基础版)
前言:找了上课时数据结构的教程来看,但是用的语言是c++,所以具体实现在网上搜大神的博客来看,我看到的大神们的博客都写得特别好,不止讲了最基本的思想和算法实现,更多的是侧重于实例运用,一边看一边在心里 ...
- C语言数据结构——第三章 栈和队列
三.栈和队列 栈和队列是两种重要的线性结构.从数据结构的角度来看,栈和队列也是线性表,它的特殊性在于栈和队列的基本操作是线性表操作的子集,它们的操作相对于线性表来说是受到限制的,因此,可以称其为限定性 ...
- C语言数据结构基础学习笔记——栈和队列
之前我们学过了普通的线性表,接下来我们来了解一下两种特殊的线性表——栈和队列. 栈是只允许在一端进行插入或删除的线性表. 栈的顺序存储结构也叫作顺序栈,对于栈顶指针top,当栈为空栈时,top=-1: ...
- 《数据结构》C++代码 栈与队列
线性表中,先进先出的叫队列,先进后出的叫栈.队列常用于BFS,而在函数递归层数过高时,需要手动实现递归过程,这时候便需要写一个“手动栈”. 有时候,我们会有大量数据频繁出入队列,但同时存在其内的元素却 ...
随机推荐
- jar 启动关闭
1.后台启动 startTest.sh #设置工程路径project_path=/root/testcd $project_path#nohup后台启动,输出日志到test.lognohup java ...
- <th>折行显示
设置了一些框架的样式导致折行显示失效,解决办法: https://jingyan.baidu.com/article/3a2f7c2e24cd1826afd611e7.html
- IT职场?未来?
转自 IT职场?未来? 不能否认,有些技术大牛,生活也过的不错,工资不少挣.但是这种人,本来就不多啊,很少啊.这些人一般都是小时候就搞程序的,你觉得你半路出家,能变成这种超级牛人么?? 而且这些牛人, ...
- 智能手表ticwatch穿戴体验
前言 可穿戴设备近几年越来越火,最开始是谷歌眼睛.手环,再到手表.VR眼镜,相信未来几年这片领域依旧火热~ 自从谷歌发布Android Wear.苹果发布Apple Watch之后,智能手表的战役就正 ...
- (转) CentOS 7添加开机启动服务/脚本
CentOS 7添加开机启动服务/脚本 原文:http://blog.csdn.net/wang123459/article/details/79063703 一.添加开机自启服务 在CentOS 7 ...
- cloudera manager的7180 web界面访问不了的解决办法(图文详解)
说在前面的话 我的机器是总共4台,分别为ubuntucmbigdata1.ubuntucmbigdata2.ubuntucmbigdata3和ubuntucmbigdata4.(注意啦,以下是针对Ub ...
- 设置ibus为默认输入法
/etc/profile 文件中编辑 export INPUT_METHOD="ibus"
- CSS3实现鼠标悬停扩展效果
我们在做导航标签的时候,有时会出现空间过于拥挤需要隐藏部分内容的情况,所以在这里我自己写了一个鼠标悬停显示扩展内容的效果,如下图所示. 总的来说效果还是比较好实现,但是比较头疼的是三角部分使用了伪元素 ...
- URAL ——1249——————【想法题】
Ancient Necropolis Time Limit:5000MS Memory Limit:4096KB 64bit IO Format:%I64d & %I64u ...
- FZU 1924——死锁——————【topo判环】
死锁 Time Limit:1000MS Memory Limit:32768KB 64bit IO Format:%I64d & %I64u Submit Status Pr ...