高手请帮忙用java版的数据结构,设置3个队列,实现入队出队。
3个队列是分别保留手机上最近10个“未接来电”、“已接来电”和“已拨电话”。(是最近10个,当超过10个,就要把最先接到的电话从队列中删掉),不懂呀!谢谢啦!...
3个队列是分别保留手机上最近10个“未接来电”、“已接来电”和“已拨电话”。(是最近10个,当超过10个,就要把最先接到的电话从队列中删掉),不懂呀!谢谢啦!
展开
4个回答
展开全部
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]);
}
}
/**
*
* @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]);
}
}
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
思路是这么的
三个list吧
一个方法是添加add()
先判断list的长度 长度超过10或者等于10
把最末尾的删除
然后把新数据添加
三个list吧
一个方法是添加add()
先判断list的长度 长度超过10或者等于10
把最末尾的删除
然后把新数据添加
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
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]);
}
}
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]);
}
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
可以用数组或者模拟链表来处理这个问题
主要思路:
1、数组
建立有10个元素空间的数组a,初始化为全部值为空,每次插入新的电话号码则从头到尾依次判断是否为空,并在第一个查到的控制出插入。如果该数组没有空值存在(即超过10个),则从头开始依次做a[n]=a[n+1](n>=0&&n<10),然后在a[9]即数组尾部插入
2、模拟链表
先用java模拟出链表类(出于时间原因就不详细描述了),每次在链表尾部添加电话号码,当添加时经过的节点数超过10个,就让头节点指向第二个节点
PS:2种方法各有优势,前者简单易实现,后者节省系统资源,就手机存储这种数据量不大的情况而言,建议使用数组。
再PS:waykingchanglu兄的建议你也可以试试,但是他错了一点:不是删除最末尾而是删除最前的一个。队列就是要先进先出的。
主要思路:
1、数组
建立有10个元素空间的数组a,初始化为全部值为空,每次插入新的电话号码则从头到尾依次判断是否为空,并在第一个查到的控制出插入。如果该数组没有空值存在(即超过10个),则从头开始依次做a[n]=a[n+1](n>=0&&n<10),然后在a[9]即数组尾部插入
2、模拟链表
先用java模拟出链表类(出于时间原因就不详细描述了),每次在链表尾部添加电话号码,当添加时经过的节点数超过10个,就让头节点指向第二个节点
PS:2种方法各有优势,前者简单易实现,后者节省系统资源,就手机存储这种数据量不大的情况而言,建议使用数组。
再PS:waykingchanglu兄的建议你也可以试试,但是他错了一点:不是删除最末尾而是删除最前的一个。队列就是要先进先出的。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询