导航:首页 > 编程语言 > java队列栈实现

java队列栈实现

发布时间:2023-01-19 23:08:08

A. 栈与队列的实现(java)

import java.util.Stack;

public class Translate {
//程序入口
public static void main(String[]args){
int n = Translate.translate(3467,8);
System.out.println("结果是:"+n);
}

public static int translate(int number, int base_num) {
//使用栈
Stack<Integer>stack = new Stack<Integer>();
while(number>0){
//压栈
stack.push(number % base_num);
number /= base_num;
}
int n = stack.size();
int val=0;
//依次出栈并合成结果(用我们熟悉的十进制表示,所以乘以10)
for(int i=0;i<n;i++){
val=val*10+stack.pop();
}
return val;
}
}

B. 如何使用java代码实现栈和队列

如何使用java代码实现栈和队列
import java.util.Scanner;
import java.util.Stack;

/**
* @author Owner
*
*/
public class Main {

public static void main(String[] args) {
Scanner sc = new Scanner(System.in);

int n= sc.nextInt();//3条测试数据数据

Stack<Character> stack = null;

while(n!=0){

//从控制台读入一个测试字符串[]() [(])
String str = sc.next();
//如果该输入字符串为奇数,说明不匹配
if(str.length() % 2 == 1){
System.out.println("No");
}else{
//说明字符是偶数
stack = new Stack<Character>();

//遍历第一条测试字符串[]() [(])
for(int i=0;i<str.length();i++){
if(stack.isEmpty()){
//如果栈是空的
stack.push(str.charAt(i));
}else if(stack.peek() == '[' && str.charAt(i) == ']' || stack.peek() == '(' && str.charAt(i) == ')'){
//说明此时栈中字符不是空的,并且符合,
stack.pop();
}else{

stack.push(str.charAt(i));
}
}

if(stack.isEmpty()){
//如果栈是空的,说明<a href="https://www..com/s?wd=%E6%8B%AC%E5%8F%B7&tn=44039180_cpr&fenlei=-bIi4WUvYETgN-" target="_blank" class="-highlight">括号</a>匹配
System.out.println("Yes");
}else{
//说明栈不为空,<a href="https://www..com/s?wd=%E6%8B%AC%E5%8F%B7&tn=44039180_cpr&fenlei=-bIi4WUvYETgN-" target="_blank" class="-highlight">括号</a>不匹配
System.out.println("No");
}
}

n--;
}

}
}

C. 跪求用JAVA语言实现一个栈和一个队列,数据元素为double型。。。具体在问题补充里

publicinterfaceMyStack<T>{
/**
*判断栈是否为空
*/
booleanisEmpty();
/**
*清空栈
*/
voidclear();
/**
*栈的长度
*/
intlength();
/**
*数据入栈
*/
booleanpush(Tdata);
/**
*数据出栈
*/
Tpop();
}
publicclassMyArrayStack<T>implementsMyStack<T>{
privateObject[]objs=newObject[16];
privateintsize=0;

@Override
publicbooleanisEmpty(){
returnsize==0;
}

@Override
publicvoidclear(){
//将数组中的数据置为null,方便GC进行回收
for(inti=0;i<size;i++){
objs[size]=null;
}
size=0;
}

@Override
publicintlength(){
returnsize;
}

@Override
publicbooleanpush(Tdata){
//判断是否需要进行数组扩容
if(size>=objs.length){
resize();
}
objs[size++]=data;
returntrue;
}

/**
*数组扩容
*/
privatevoidresize(){
Object[]temp=newObject[objs.length*3/2+1];
for(inti=0;i<size;i++){
temp[i]=objs[i];
objs[i]=null;
}
objs=temp;
}

@SuppressWarnings("unchecked")
@Override
publicTpop(){
if(size==0){
returnnull;
}
return(T)objs[--size];
}

@Override
publicStringtoString(){
StringBuildersb=newStringBuilder();
sb.append("MyArrayStack:[");
for(inti=0;i<size;i++){
sb.append(objs[i].toString());
if(i!=size-1){
sb.append(",");
}
}
sb.append("]");
returnsb.toString();
}
}
//栈的链表实现
publicclassMyLinkedStack<T>implementsMyStack<T>{
/**
*栈顶指针
*/
privateNodetop;
/**
*栈的长度
*/
privateintsize;

publicMyLinkedStack(){
top=null;
size=0;
}

@Override
publicbooleanisEmpty(){
returnsize==0;
}

@Override
publicvoidclear(){
top=null;
size=0;
}

@Override
publicintlength(){
returnsize;
}

@Override
publicbooleanpush(Tdata){
Nodenode=newNode();
node.data=data;
node.pre=top;
//改变栈顶指针
top=node;
size++;
returntrue;
}

@Override
publicTpop(){
if(top!=null){
Nodenode=top;
//改变栈顶指针
top=top.pre;
size--;
returnnode.data;
}
returnnull;
}

/**
*将数据封装成结点
*/
privatefinalclassNode{
privateNodepre;
privateTdata;
}
}

D. 用两个栈实现一个队列,且用JAVA程序语言编写,求思路和结果

队列是先进先出~ 栈是先进后出 比如 stack1 和 stack2 来实现queue
对于queue来说 进入的数据顺序比如是 1,2,3,4,5 出来顺序也是 1,2,3,4,5
用stack实现的话可以 数据进去的时候用stack1来存 存完后出来的顺序是 5,4,3,2,1 这跟queue的顺序不一样,所以需要stack2 ,将stack1的数据一个个输出存到stack2中,这样stack2中的数据也就是1,2,3,4,5了,跟queue一样 过程中要注意你现在数据时用stack1来存还是stack2来存。

E. java队列和栈在计算器的应用

public class MyStack { String str; StringBuilder expression; static final String operationalCharacters = "+-*/()";//操作符号 static final String number = "012345689";//数字集 public MyStack(String str) { this.str = str; generateExp(); } public void generateExp(){ expression = new StringBuilder(); for(char ch:str.toCharArray()){ if(isNumber(ch) || isOperationalCharacter(ch)){ expression.append(ch); } } } public String getExp(){ return expression.toString(); } public boolean isNumber(char ch){ return number.indexOf(ch) >= 0; } public boolean isOperationalCharacter(char ch){ return operationalCharacters.indexOf(ch) >= 0; } public void showItems(){ System.out.println(expression); } public static void main(String[] args) { MyStack s = new MyStack("d5 ~c+ 2$+a32*10b"); s.showItems(); }}

F. 我要用java实现一个栈,基本操作就是出栈入栈。请问如何实现效率比较高。

java的list的子类里面有个叫vector,这个下面有个叫做stack,可以实现!你去看 看看

阅读全文

与java队列栈实现相关的资料

热点内容
单片机程序存储c 浏览:489
赛高网解压密码 浏览:775
云服务器安装赚钱宝 浏览:107
pdf能修改内容吗 浏览:386
贷款办下来不给解压 浏览:141
德国顶级编程思路 浏览:852
Flt单片机 浏览:476
ami和hdb3编译码对比 浏览:665
纯手工制作解压视频 浏览:119
云职教APP为什么收不到验证码 浏览:697
礼品发包网源码 浏览:569
什么app上能制图 浏览:86
为什么代理服务器没响应 浏览:562
小程序编译提示 浏览:824
nameerrorpython 浏览:294
辞典pdf下载 浏览:801
遗传算法违反约束路径数目 浏览:177
少年班中的古人算法 浏览:931
什么app一键p图好看 浏览:573
查询手机连上电脑的命令 浏览:850