网站建设资讯

NEWS

网站建设资讯

java代码实现栈和队列 Java栈和队列

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

队列是先进先出~ 栈是先进后出 比如 stack1 和 stack2 来实现queue

创新互联主要从事做网站、成都网站建设、网页设计、企业做网站、公司建网站等业务。立足成都服务洱源,十余年网站建设经验,价格优惠、服务专业,欢迎来电咨询建站服务:18982081108

对于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来存。

怎样用2个栈实现队列(java)

队列的要求是先进先出,用两个栈可以很容易的实现

假设其中一个栈为s1, 另一个为s2

1. 入队:将元素放入s1中,s2始终为空

2. 出队:

1). 首先将s1中的元素全部导入s2的栈中,清空s1,

2). 然后再将s2栈顶元素出栈,保留下来,

3). 将s2剩余元素导入s1中,恢复数据原有顺序,就可以了

至于代码,自己想想就能写出来

怎么用java代码实现栈内存?

使用java.util包中的Stack类创建一个栈对象

public Object push(Object data);输入数据,实现压栈

public Object pop();输出数据,实现弹栈

public boolean empty()判空

public Object peek();查看栈顶元素

可以去查查API嘛

我也是学java的,大家一起进步。

栈与队列的实现(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) {

//使用栈

StackIntegerstack = new StackInteger();

while(number0){

//压栈

stack.push(number % base_num);

number /= base_num;

}

int n = stack.size();

int val=0;

//依次出栈并合成结果(用我们熟悉的十进制表示,所以乘以10)

for(int i=0;in;i++){

val=val*10+stack.pop();

}

return val;

}

}

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

public interface MyStackT {

/**

 * 判断栈是否为空

 */

boolean isEmpty();

/**

 * 清空栈

 */

void clear();

/**

 * 栈的长度

 */

int length();

/**

 * 数据入栈

 */

boolean push(T data);

/**

 * 数据出栈

 */

T pop();

}

public class MyArrayStackT implements MyStackT {

private Object[] objs = new Object[16];

private int size = 0;

@Override

public boolean isEmpty() {

return size == 0;

}

@Override

public void clear() {

// 将数组中的数据置为null, 方便GC进行回收

for (int i = 0; i  size; i++) {

objs[size] = null;

}

size = 0;

}

@Override

public int length() {

return size;

}

@Override

public boolean push(T data) {

// 判断是否需要进行数组扩容

if (size = objs.length) {

resize();

}

objs[size++] = data;

return true;

}

/**

 * 数组扩容

 */

private void resize() {

Object[] temp = new Object[objs.length * 3 / 2 + 1];

for (int i = 0; i  size; i++) {

temp[i] = objs[i];

objs[i] = null;

}

objs = temp;

}

@SuppressWarnings("unchecked")

@Override

public T pop() {

if (size == 0) {

return null;

}

return (T) objs[--size];

}

@Override

public String toString() {

StringBuilder sb = new StringBuilder();

sb.append("MyArrayStack: [");

for (int i = 0; i  size; i++) {

sb.append(objs[i].toString());

if (i != size - 1) {

sb.append(", ");

}

}

sb.append("]");

return sb.toString();

}

}

//栈的链表实现

public class MyLinkedStackT implements MyStackT {

/**

 * 栈顶指针

 */

private Node top;

/**

 * 栈的长度

 */

private int size;

public MyLinkedStack() {

top = null;

size = 0;

}

@Override

public boolean isEmpty() {

return size == 0;

}

@Override

public void clear() {

top = null;

size = 0;

}

@Override

public int length() {

return size;

}

@Override

public boolean push(T data) {

Node node = new Node();

node.data = data;

node.pre = top;

// 改变栈顶指针

top = node;

size++;

return true;

}

@Override

public T pop() {

if (top != null) {

Node node = top;

// 改变栈顶指针

top = top.pre;

size--;

return node.data;

}

return null;

}

/**

 * 将数据封装成结点

 */

private final class Node {

private Node pre;

private T data;

}

}


分享标题:java代码实现栈和队列 Java栈和队列
标题网址:http://cdweb.net/article/hidgde.html