2016-07-09 5 views
1

Я пытаюсь добавить несколько информации в один узел в одном связанном списке ... Как это сделать?Сохранение нескольких данных в одном узле в одиночном списке

После того, как пользователь запросит несколько информации об автомобиле: plateNo(String), vehicleType(String), serviceType(String) Мне нужно будет хранить эту информацию для каждого автомобиля. Я должен использовать односвязный список для хранения всего входящего в систему автомобиля и выхода из стирки.

Затем моя программа должна отображать все транспортные средства, входящие и выходящие из машины, с указанием их сервисного заказа.

Как это сделать?

Это мой одиночно LinkedList:

public class LinkedList<T> 
{ 
    private Node<T> head; // first node in the linked list 
    private int count; 

    public int getCount() { 
     return count; 
    } 

    public Node getHead() { 
     return head; 
    } 

    public LinkedList() { 
     head = null; // creates an empty linked list 
     count = 0; 
    } 

    public void displayList(){ 
     Node<T> current = head;  // start at beginning 
     while(current != null)  // until end of list, 
     { 
      System.out.print(current.getData() + " "); 
      current = current.getNext(); 
      //move to next link 
     } 
     System.out.println(""); 
    } 

    public Node deleteFront() 
    { 
     Node<T> temp = head; 
     if(head.getNext() == null) // if only one item 
      return null;   // return null 
     head = head.getNext();  // first --> old next 
     count--; 
     return temp; 
    } 

    public void removeValue(T value) 
    { 
     Node<T> current = head, prev = null; 
     while (current != null) 
     { //if current node contains value 
      if (value == current.getData()) 
      { 
       //handle front removal (case 1) 
       if(prev == null) 
        head = current.getNext(); 
       else //handle mid removal (case 2) 
        prev.setNext(current.getNext()); 
        // prev node now points to        maxNode's (a.k.a current)       successor, removing max node. 

       break; // remove first occurence only 
      } 
      // update prev to next position (curr) 
      prev = current; 
      // move curr to the next node 
      current = current.getNext(); 
     } 
    } 

    public void addFront(T n) 
    { 
     Node<T> newNode = new Node<T>(n); 
     newNode.setNext(head); 
     head = newNode; 
     count++; 
    } 
} 

Мой узел

public class Node<T> { 
    private T data; 
    private Node next; 
    public T getData() { 
     return data; 
    } 
    public void setData(T data) { 
     this.data = data; 
    } 
    public Node getNext() { 
     return next; 
    } 
    public void setNext(Node next) { 
     this.next = next; 
    } 
    public Node(T data) { 
     this.data = data; 
     this.next = null; 
    } 
} 

ответ

3

Я пытаюсь добавить несколько информацию в один узел в односвязный список ... Как я сделай это?

... путем мышления объектно-ориентированный! Создайте класс, который моделирует автомобиля:

class Vehicle { 
    String plateNo; 
    String vehicleType; 
    String serviceType; 
    // constructors, getters, setters, other methods ... 
} 

Вы имеете уже общийNode<T>, поэтому использовать его:

Vehicle vehicle = callAwesomeMethodThatCreatesVehicleInstance(); 
Node<Vehicle> node = new Node(vehicle); 

Теперь вы можете использовать такой узел в связанном списке.

+0

Честно ... это слишком широка, чтобы ответить. Я не могу объяснить концепции ООП коротким и беременным ответом. Пожалуйста, уделите время и изучите его (могут потребоваться годы). – Seelenvirtuose

0

Ваш код кажется прекрасным. Вам просто нужно определить новый класс, содержащий всю информацию, которую вы хотите сохранить. Поскольку вы уже сделали класс Node для общего типа данных T, вы можете вставить новый класс, который вы здесь сделаете.

class Details{ 
    String plateNo; 
    String vehicleType; 
    String serviceType; 

    public Details(){ 
     this.plateNo = ""; 
     this.vehicleType = ""; 
     this.serviceType = ""; 
    } 
} 

Затем в коде связанного списка:

public class LinkedList<T> 
{ 
    private Node<Details> head = new Details(); 
    //rest of the class 

} 
+0

Как использовать этот метод в основном классе? жаль, что я новичок в программировании ... – Minchae

+0

Вы можете создать класс «Details» вне вашего основного класса, не объявив его закрытым. Затем просто используйте «Детали» вместо «Т» в вашем коде - частный узел head; становится частным узлом

head = new Details(); –

+0

Наличие 'Node

' внутри общего 'LinkedList ' очень плохое предложение. – Seelenvirtuose