高手请帮忙用java版的数据结构,设置3个队列,实现入队出队。

3个队列是分别保留手机上最近10个“未接来电”、“已接来电”和“已拨电话”。(是最近10个,当超过10个,就要把最先接到的电话从队列中删掉),不懂呀!谢谢啦!... 3个队列是分别保留手机上最近10个“未接来电”、“已接来电”和“已拨电话”。(是最近10个,当超过10个,就要把最先接到的电话从队列中删掉),不懂呀!谢谢啦! 展开
 我来答
狱韬
推荐于2016-09-04 · 超过50用户采纳过TA的回答
知道小有建树答主
回答量:286
采纳率:100%
帮助的人:171万
展开全部
import java.util.ArrayList;

/**
*
* @author 狱韬
*/
public class SnakeBody {
private int size=0; //队列的长度
private int cursor=-1; //指针
private ArrayList<int[]> list=null; //存储器

public SnakeBody() {
list=new ArrayList<int[]>(); //存储器
}

//返回底部的数据
public int[] getLast(){
return list.get(list.size()-1);
}

//返回顶部的数据
public int[] getFirst(){
return list.get(0);
}

//压入数据
public void put(int[] arry){
list.add(arry);
}

//删除底部数据
public void removeLast(){
list.remove(list.size()-1);
}

//重置
public void reSet(){
list=new ArrayList<int[]>(); //存储器
}

//删除顶部数据
public void removeFirst(){
list.remove(0);
}

//返回数据长度
public int size(){
return list.size();
}

public static void main(String[] args) {
SnakeBody data = new SnakeBody();
for(int i=0;i<10;i++){
data.put(new int[]{0,i});
}
System.out.println(data.getFirst()[0]+"-------"+data.getFirst()[1]);
System.out.println(data.getLast()[0]+"-------"+data.getLast()[1]);
data.removeLast();
System.out.println(data.getFirst()[0]+"-------"+data.getFirst()[1]);
System.out.println(data.getLast()[0]+"-------"+data.getLast()[1]);
}
}
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
waykingchanglu
2009-04-03 · TA获得超过203个赞
知道小有建树答主
回答量:308
采纳率:100%
帮助的人:124万
展开全部
思路是这么的
三个list吧
一个方法是添加add()
先判断list的长度 长度超过10或者等于10
把最末尾的删除
然后把新数据添加
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
索颜麻元嘉
2019-10-16 · TA获得超过1182个赞
知道小有建树答主
回答量:1871
采纳率:95%
帮助的人:8.7万
展开全部
import
java.util.
ArrayList
;
/**
*
*
@author
狱韬
*/
public
class
SnakeBody
{
private
int
size=0;
//队列的长度
private
int
cursor=-1;
//指针
private
ArrayList<int[]>
list=null;
//存储器
public
SnakeBody()
{
list=new
ArrayList<int[]>();
//存储器
}
//返回底部的数据
public
int[]
getLast(){
return
list.get(list.size()-1);
}
//返回顶部的数据
public
int[]
getFirst(){
return
list.get(0);
}
//压入数据
public
void
put(int[]
arry){
list.add(arry);
}
//删除底部数据
public
void
removeLast(){
list.remove(list.size()-1);
}
//重置
public
void
reSet(){
list=new
ArrayList<int[]>();
//存储器
}
//删除顶部数据
public
void
removeFirst(){
list.remove(0);
}
//返回数据长度
public
int
size(){
return
list.size();
}
public
static
void
main(String[]
args)
{
SnakeBody
data
=
new
SnakeBody();
for(int
i=0;i<10;i++){
data.put(new
int[]{0,i});
}
System.out.println(data.getFirst()[0]+"-------"+data.getFirst()[1]);
System.out.println(data.getLast()[0]+"-------"+data.getLast()[1]);
data.removeLast();
System.out.println(data.getFirst()[0]+"-------"+data.getFirst()[1]);
System.out.println(data.getLast()[0]+"-------"+data.getLast()[1]);
}
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
aonyerk
2009-04-03 · TA获得超过317个赞
知道答主
回答量:116
采纳率:0%
帮助的人:78.2万
展开全部
可以用数组或者模拟链表来处理这个问题
主要思路:
1、数组
建立有10个元素空间的数组a,初始化为全部值为空,每次插入新的电话号码则从头到尾依次判断是否为空,并在第一个查到的控制出插入。如果该数组没有空值存在(即超过10个),则从头开始依次做a[n]=a[n+1](n>=0&&n<10),然后在a[9]即数组尾部插入
2、模拟链表
先用java模拟出链表类(出于时间原因就不详细描述了),每次在链表尾部添加电话号码,当添加时经过的节点数超过10个,就让头节点指向第二个节点

PS:2种方法各有优势,前者简单易实现,后者节省系统资源,就手机存储这种数据量不大的情况而言,建议使用数组。

再PS:waykingchanglu兄的建议你也可以试试,但是他错了一点:不是删除最末尾而是删除最前的一个。队列就是要先进先出的。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 2条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式