java栈后进先出的代码 java进栈出栈函数

Java设计一个名为Queue的类用于存储整数。像栈一样,队列具有元素。在栈中,元素以“后进先出”的方式

参考代码和注释如下

创新互联建站长期为1000+客户提供的网站建设服务,团队从业经验10年,关注不同地域、不同群体,并针对不同对象提供差异化的产品和服务;打造开放共赢平台,与合作伙伴共同营造健康的互联网生态环境。为望花企业提供专业的成都网站设计、网站建设、外贸网站建设望花网站改版等技术服务。拥有10多年丰富建站经验和众多成功案例,为您定制开发。

简单测试了下,如果有问题接着在讨论

public class Queue {

private int[] elements;

public static final int DEFAULT_CAPACITY =8;//默认长度8

private int size = 0;

public Queue() {

elements = new int[DEFAULT_CAPACITY];

}

public Queue(int capacity) {

elements = new int[capacity];

}

public void enqueue(int v) {

if (size = elements.length) {// 数组扩容

int[] temp = new int[elements.length * 2];

System.arraycopy(elements, 0, temp, 0, elements.length);

elements = temp;

}

elements[size++] = v;

}

public int dequeue() {// 先进先出

if (empty()) {

throw new RuntimeException("异常");

}

int x = elements[0];// 先把第一个元素保存出来

// 左移一位

// int[] temp = new int[elements.length];

// System.arraycopy(elements,1, temp, 0, elements.length-1);

// elements = temp;

// 左移一位

for (int i = 0; i  elements.length - 1; i++) {

elements[i] = elements[i + 1];

}

elements[elements.length - 1] = 0;// 外面一般访问不了elements 后面的元素可以不用归零,但是归零了感觉舒服点

size--;

return x;

}

public boolean empty() {

return size == 0;

}

public int getSize() {

return size;

}

}

输出

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20

java数组方法pop() push() unshift() shift()

JS中的数组提供了四个操作,以便让我们实现队列与堆栈!

小理论:

队列:先进先出

堆栈:后进先出

实现队列的方法:

shift:从集合中把第一个元素删除,并返回这个元素的值。

unshift: 在集合开头添加一个或更多元素,并返回新的长度

push:在集合中添加元素,并返回新的长度

pop:从集合中把最后一个元素删除,并返回这个元素的值。

这是原来老赵写的关于数组队列的代码,觉得有点问题,所以改了一下

1 // Usage:装载并运行函数

2 // 队列机制

3 var Resource = (function () {

4 var waitingCallbacks = [];

5 var execute = function (cb) {

6 setTimeout(function () {

7 cb(function () {

8 if (waitingCallbacks.length == 0) return;

9 execute(waitingCallbacks.shift());

10 });

11 }, 0);

12 };

13 var register = function (cb) {

14 if (waitingCallbacks.length == 0) {

15 execute(cb);

16 } else {

17 waitingCallbacks.push(cb);

18 }

19 }

20 return {

21 register: register,

22 state: 1

23 }

24 })();

原来代码中是

execute(waitingCallbacks.unshift());现在我改成了

execute(waitingCallbacks.shift());当你从集合中执行了函数后,它应该从集合中删除,而不是再添加,呵呵。

用java实现数据结构“栈

Java栈的实现

public

class

MyStack

{

//定义一个堆栈类

int[]

array;

//用int数组来保存数据,根据需要可以换类型

int

s_size;

//定义堆栈的宽度

public

MyStack(int

i){

//定义一个带参数构造器

array=new

int[i];

//动态定义数组的长度

s_size=0;

//堆栈的默认宽度为0

}

public

MyStack(){

//默认构造器

this(50);

//默认构造器可容纳50个元素

}

public

void

push(int

i){

//压栈

array[this.s_size]=i;

this.s_size++;

}

public

int

pop(){

//从堆栈中取元素,从栈顶开始取

if(this.s_size!=0){

int

t=array[s_size-1];

//用中间变量保存栈顶的元素

array[s_size-1]=0;

//取完元素该位置设为0

s_size--;

//栈的大小减1

return

t;

//返回栈顶元素

}else{

System.out.println("This

stack

is

empty");

//当栈为空时显示提示信息,返回0

return

0;

}

}

public

boolean

isEmpty(){

//判断栈是否为空

return

this.s_size==0;

}

public

int

top(){

//从栈顶取值,功能和

pop()

方法一样

if(!this.isEmpty()){

int

t=array[this.s_size-1];

array[this.s_size-1]=0;

this.s_size--;

return

t;

}else{

System.out.println("This

stack

is

empty!");

return

0;

}

}

public

void

printAll(){

//打印出堆栈中的所有元素的值,不是取出,元素依然在堆栈里

if(!this.isEmpty()){

for(int

i=this.s_size

-

1;i=0;i--){

System.out.println(array[i]);

}

}

}

//下面是测试代码

public

static

void

main(String[]

args){

MyStack

stack=new

MyStack();

stack.push(4);

stack.push(5);

stack.push(6);

stack.push(7);

//System.out.println(stack.isEmpty());

stack.printAll();

System.out.println("===========");

System.out.println(stack.top());

System.out.println(stack.top());

System.out.println(stack.top());

System.out.println(stack.top());

System.out.println(stack.top());

}

}


网站栏目:java栈后进先出的代码 java进栈出栈函数
文章地址:http://azwzsj.com/article/ddghjhp.html