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

java栈和队列

发布时间:2025-03-02 23:03:01

java中的队列都有哪些,有什么区别

阻塞队列、普通队列,非阻塞队列。

阻塞队列与普通队列的而区别在于,当队列是空时,从队列中获取元素的操作会被阻塞,或则当队列是满的时,往队列中增加元素会被阻塞,试图从空的队列中取元素的线程或从满的队列中添加元素的线程同样会被阻塞。

⑵ java 队列

java类库有Queue类,但是如果楼主想自己定义队列的话,可以模仿C++指针定义队列的方式。java和C#虽然没有指针,但是它们的对象默认都是传引用的,也就像指针传递地址一样,呵呵。

⑶ JAVA中队列和栈的区别

队列(Queue):是限定只能在表的一端进行插入和在另一端进行删除操作的线性表;

栈(Stack):是限定只能在表的一端进行插入和删除操作的线性表。

区别如下:

一、规则不同

1. 队列:先进先出(First In First Out)FIFO

2. 栈:先进后出(First In Last Out )FILO

二、对插入和删除操作的限定不同

1. 队列:只能在表的一端进行插入,并在表的另一端进行删除;

2. 栈:只能在表的一端插入和删除。

三、遍历数据速度不同

1.
队列:基于地址指针进行遍历,而且可以从头部或者尾部进行遍历,但不能同时遍历,无需开辟空间,因为在遍历的过程中不影响数据结构,所以遍历速度要快;

2.
栈:只能从顶部取数据,也就是说最先进入栈底的,需要遍历整个栈才能取出来,而且在遍历数据的同时需要为数据开辟临时空间,保持数据在遍历前的一致性。

⑷ 跪求用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;
}
}

阅读全文

与java栈和队列相关的资料

热点内容
命令行设置环境变量 浏览:535
python编译器免费 浏览:364
服务器规格是2u的什么意思 浏览:626
网络服务器下发超时怎么回事 浏览:339
阿里云服务器怎么自动重启 浏览:518
杜比视界是算法吗 浏览:911
储存卡文件夹叫什么 浏览:891
cf为什么停止服务器连接 浏览:563
程序员那么可爱口红色号 浏览:121
没有项目经验程序员怎么找到工作 浏览:815
pythoncircle 浏览:724
51单片机做的产品 浏览:619
php判断赋值 浏览:391
pvc怎么加密 浏览:615
飞鸽手机app怎么下载 浏览:133
极星2app怎么用 浏览:966
数学列式算法有哪些 浏览:773
电脑中文密码如何解压 浏览:741
服务器在伯利兹有什么功效 浏览:157
ade7755与单片机 浏览:523