添加和删​​除条件的链表

时间:2014-03-06 18:23:16

标签: java class object linked-list

所以..我已经盯着这个编程工作几个小时了,我已经完成了所有的讲义,练习和谷歌如何做到这一点,但我仍然可以'吨。我甚至不会抱歉在这里粘贴我的整个作业。 :D基本上,我需要在parkingLots中添加和删除Lots。

例如,“ADD 5 3”表示从批次5开始将3批次添加到占用批次列表中。因此,如果请求成功,将向3辆车的入境车队提供5,6,7号。 同样,如果请求成功,“REMOVE 10 2”意味着当2辆车离开停车场时,释放2个占用的10和11号地段。

如果任何请求的批次已被占用,则ADD请求不会成功。在这种情况下,所请求的批次都不会被添加到占用批次列表中。

如果任何请求的批次空缺,则REMOVE请求不会成功。在这种情况下,不会从占用批次列表中删除任何批次。

开始+大小不超过1000;如果是,则该请求被视为无效,不会采取任何措施。

列表中的节点按起始值的升序维护。

我的思维过程就是这样 在读取起始批次和批量大小后,检查它是否与之前的批次或下一批次冲突。如果确实如此,那么就什么都不做。如果它没有,那么添加。 Ť

toString()方法中的迭代器将覆盖打印第一批大小的打印问题,然后是下一批等等。

我在添加和删除方面遇到了很大的问题,因为LinkedList只占用了位置,但它没有占用大小。例如,如果开头是12并且批次是2,那么从技术上讲它应该占用12和13但是代码是这样的,它在12处添加Lot对象并且在LinkedList中的位置13是空的。如果我想检查LinkedList上的Lot是否被占用,这将给我带来问题,只有一个位置被占用。

public class ParkingManager {
 12 
 13     private static final int LAST_LOT = 1000;
 14     private LinkedList <Lots> parkingLots;
 15 
 16     public ParkingManager() {
 17         parkingLots = new LinkedList<Lots>();
 18     }
 19 
 20     public void addLots(int start, int size) {
 21     
 22             
 23     }       
 24     
 25     public void removeLots(int start, int size) {
 26         
 27     }   
 28     
 29     // Returns the string representation of the linked list
 30     public String toString() {
 31         String str = "";
 32         Iterator itr = parkingLots.iterator();
 33         if (itr.hasNext())
 34             str += itr.next();
 35         while (itr.hasNext()) {
 36             str += "->" + itr.next();
 37         }   
 38         return str;
 39     }   
 40     
 41     public static void main(String[] args) {
 42     
 43         ParkingManager pm = new ParkingManager();
 44         Scanner sc = new Scanner(System.in);
 45         String op;
 46         int start, size;
 47 
 48         while (sc.hasNext()) {
 49             op = sc.next();
 50             start = sc.nextInt();
 51             size = sc.nextInt();
 52             // System.out.println(op + " " + start + " " + size); // For checking
 53             if (op.equals("ADD")) {
 54                 pm.addLots(start, size);
 55             }
 56             else if (op.equals("REMOVE")) {
 57                 pm.removeLots(start, size);
 58             }
 59             System.out.println(pm);
 60         }
 61     }
 62 }

这是Lots类

class Lots {
  6 
  7     /****** Attributes *********/
  8     int lotStart; // start lot number in the group
  9     int lotSize;  // how many lots are there in this group?
 10 
 11     /******* Constructors ********/
 12     public Lots() {
 13     }
 14 
 15     public Lots(int start, int size) {
 16         setLotStart(start);
 17         setLotSize(size);
 18     }
 19 
 20     /******** Accessors *******/
 21     public int getLotStart() {
 22         return lotStart;
 23     }
 24 
 25     public int getLotSize() {
 26         return lotSize;
 27     }
 28 
 29     /********* Mutators ********/
 30     public void setLotStart(int start) {
 31         lotStart = start;
 32     }
 33 
 34     public void setLotSize(int size) {
 35         lotSize = size;
 36     }
 37 
 38     public String toString() {
 39         return "[" + getLotStart() + ";" + getLotSize() + "]";
 40     }
 41 }
 42 

示例运行(输入以粗体显示): ADD 100 100 [100; 100] 删除150 10 [100; 50] - &GT; 160; 40] 删除145 10 [100; 50] - &GT; 160; 40] 删除100 10 [110; 40] - &GT; 160; 40] 删除190 10 [110; 40] - &GT; 160; 30] 删除120 8 [110; 10] - &GT; [128; 22] - &GT; 160; 30] (用户在这里输入ctrl-d)

我在这里死了。请帮忙:(

0 个答案:

没有答案