「顺序栈功能测试java」顺序栈基本操作的实现
本篇文章给大家谈谈顺序栈功能测试java,以及顺序栈基本操作的实现对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。
本文目录一览:
我要用java实现一个栈,基本操作就是出栈入栈。请问如何实现效率比较高。
//这是JDK提供的栈
import java.util.Stack;
public class UsingStack {
public static void main(String[] args) {
//构造栈对象,使用类型限制,只能存储Integer数据
StackInteger s = new StackInteger();
//1、2、3依次入栈
s.push(1);
s.push(2);
s.push(3);
//3、2、1依次出栈
System.out.println(s.pop());
System.out.println(s.pop());
System.out.println(s.pop());
}
}
//这是我写的顺序结构的栈
import java.util.EmptyStackException;
import java.util.Vector;
public class UsingStack{
public static void main(String[] args){
//构造栈对象,使用类型限制,只能存储Integer数据
MyStackInteger s = new MyStackInteger();
//1、2、3依次入栈
s.push(1);
s.push(2);
s.push(3);
//3、2、1依次出栈
System.out.println(s.pop());
System.out.println(s.pop());
System.out.println(s.pop());
}
}
/**
* 栈类
* @author developer_05
* @param T
*/
class MyStackT extends VectorT{
/**
* 构造方法
*/
public MyStack(){
}
/**
* 入栈方法
* @param item 待入栈的元素
* @return 返回入栈的元素
*/
public T push(T item) {
addElement(item);
return item;
}
/**
* 出栈方法(同步处理)
* @return 返回出栈元素
*/
public synchronized T pop() {
T obj;
int len = size();
if (len == 0)
throw new EmptyStackException();
obj = elementAt(len - 1);
removeElementAt(len - 1);
return obj;
}
/**
* 判断栈是否为空的方法
* @return 返回true(栈空)或false(栈非空)
*/
public boolean empty() {
return size() == 0;
}
private static final long serialVersionUID = 1L;
}
顺序栈的应用二:括号匹配的检验
假设表达式中允许包含三种括号:圆括号( )、方括号[ ]和花括号{ },其嵌套的顺序随意。
{ ( [ ] ( ) ) }或[ { ( [ ] [ ] ) } ]等为正确的格式,[ ( ] 、( [ ( ) ) 、( ( ) ]均为不正确的格式。
检验括号是否匹配的方法可用“期待的急迫程度”这个概念来描述。
例如考虑下列括号序列:
当计算机接受了第一个括号后,它期待着与其匹配的第八个括号的出现,然而等来的却是第二个括号,此时第一个括号‘[’只能暂时靠边,而迫切等待与第二个括号相匹配的、第七个括号‘)'的出现...这个处理的过程与栈的特点相吻合。
由此,在算法中设置一个栈,每读入一个括号,若是右括号,则使置于栈顶的最急迫的期待得以消解,若是左括号,则作为一个新的更急迫的期待压入栈中,自然使原有的在栈中的所有未消解的期待的急迫性都降了一级。另外,在算法的开始和结束时,栈都应该是空的。
BracketMatching.c利用了前面的C封装的顺序栈对象 用线性表表示的顺序栈
实现了输入任意一串字符串,检测字符串中三种括号是否匹配的功能。
github源码
运行BracketMatching,显示:
示例:
java用顺序栈实现数制转换 求完整程序!!
用顺序栈实现数制转换的Java程序如下:
import java.util.Scanner;
import java.util.Stack;
public class jinzhi3 {
public static void main(String arg[]){
Scanner y=new Scanner(System.in);
System.out.println("请输入十进制数");
int b=y.nextInt();
jinzhi3 j=new jinzhi3();
j.ErJinZhi(b);
j.BaJinZhi(b);
j.ShiLiuJinZhi(b);
}
//转化成二进制
void ErJinZhi(int a){
StackInteger s=new StackInteger();
String str="";
while(a0)
{
s.push(a%2);
a=a/2;
}
while(!s.isEmpty()){
str=str+s.pop();
}
System.out.println("二进制是"+str);
}
//转化成八进制
void BaJinZhi(int a){
StackInteger s=new StackInteger();
String str="";
while(a0)
{
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="";
StackCharacter s=new StackCharacter();
while(a0)
{
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);
}
}
运行结果:
请输入十进制数
28
二进制是11100
八进制是34
十六进制是1C
顺序栈功能测试java的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于顺序栈基本操作的实现、顺序栈功能测试java的信息别忘了在本站进行查找喔。
发布于:2022-12-23,除非注明,否则均为
原创文章,转载请注明出处。