队列

队列应用:代码密钥

 

1.具体实现时给出泛型的具象本例为偏移量KEY所以是Integer类型

2.用charAt()取出单个字符,强制转型为int与偏移量相加.再强转回char

 

 

售票口模拟

假定每隔15秒来一位顾客,本例模拟100位顾客

 

 

 

Customer类:

 

 

 

1.多层循环嵌套时循环指针千万不要混淆。

2.初始化工作:

所有cashier的cashierTime均为0,

将100名customer给出其arrivalTime并加入队列.

 

 

3.分别讨论安排数量不同的cashier的时间 顾客消耗的时间.(对应最外层循环)

4.每个客户的总消耗时间 用客户类本身的totalTime()计算.(面向对象的思想)

5.每个客户离开的时间有两种情况

    a.customer.getArrivalTime()>cashierTime[count]

        departs = (PROCESS+custome.getArrivalTime());

    b.customer.getArrivalTime()<cashierTime[count]

        departs = cashier[count]+PROCESS;

6.每个cashierTime[count]设为前一个客户的departsTime

 

TicketCounter类:

 

 

用单链表实现队列

(末端enqueue前端dequeue)

 

1.进队从队尾进

2.进队时若为空

front = node;

rear = node;

若不为空

rear.setNext(node);

rear = node;

3.出队时定义 T result;将其返回.

4.链式结构里,进队,出队接收,返回的都是泛型T的具象但在加入链式结构之前 用LinearNode<T>对其包装,拆装

 

 

 

数组实现循环队列

enqueue操作:rear = (rear+1)%queue.length

dequeue操作:front = (front+1)%queue.length

 

1.数组实现的循环队列 包含有T[] queue 的泛型数组.

2.rear指向其下一个可用位置。

3.count计数器记录结构里的element数.

4.当count==queue时需要expandCapacity.

5.expandCapacity();

按从front到rear的顺序将元素复制larger里

新的front = 0,rear = count(及下一个可用位置)

 

 

 

6.进队时将element放到queue[rear];rear = (rear+1)%queue.length

7.出队时T result  = queue[front];

别忘了queue[front]=null;

front = (front+1)%queue.length;

8.初始化时T[] queue = (T[])new Object[DEFAULT_CAPACITY]

 

 

 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值