2015-07-21 23 views
11

Bu yüzden Java ve programlama konusunda oldukça yeniyim ve bir düğüm sınıfının nasıl oluşturulacağını merak ediyordum?Java'da bir düğüm sınıfı oluşturma

Şimdiye kadar var:

public class ItemInfoNode{ 
    private ItemInfoNode next; 
    private ItemInfoNode prev; 
    private ItemInfo info; 
    public ItemInfoNode(ItemInfo info, ItemInfoNode next, ItemInfoNode prev){ 
     info = info; 
     next = next; 
     prev = prev; 
    } 
    public void setInfo(ItemInfo info){ 
     info = info; 

    } 
    public void setNext(ItemInfoNode node){ 
     next = node; 
    } 
    public void setPrev(ItemInfoNode node){ 
     prev = node; 
    } 
    public ItemInfo getInfo(){ 
     return info; 
    } 
    public ItemInfoNode getNext(){ 
     return next; 
    } 
    public ItemInfoNode getPrev(){ 
     return prev; 
    } 

} 

Hemen hemen bu yöntemler için sorulan soru bu yüzden o indirdi ama sonraki soru ItemInfoNode düğümlerinin baş ve kuyruk başvurmak için soruyor. Burada biraz kafam karıştı. Teşekkürler

DÜZENLEME: Yardımcılar için teşekkürler! Bir düğümün içine isim, fiyat, etiket numarası vb. Bilgileri koyan bir "InsertInfo" yöntemi oluşturmaya çalışıyorum. Bu yöntemi yaratmaya nasıl giderim?

Şimdiye kadar ben bile yapmak gerekiyordu isem/o nasıl kullanılacağını emin değilim, bunların hepsi var ama farklı bir sınıfta bir Iteminfo yapıcısı .. var .. bu var

public void InsertInfo(String name, String rfdnumber, double price, String original_position){ 

     head = new ItemInfoNode (Iteminfo, head); 
    } 
+1

Sınıf iyi görünüyor. Baş ve kuyruk düğümleri, 'LinkedList' veya benzeri bir başka sınıfta tanımlanmalıdır. –

+0

Bu dersi nasıl yaratırım? Daha spesifik olarak, bu kafa ve boş referansları nasıl oluşturabilirim. – John

+0

info info = info; 'to' this.info = info; 'işlevini, kurucu ve ayarlayıcılardaki alanların geri kalanı için değiştirin. – Pshemo

cevap

8

Java'ya hoş geldiniz! Bu Düğümler bir blok gibidir, harika şeyler yapmak için bir araya getirilmeleri gerekir! Bu özel durumda, düğümler bir liste, bağlantılı liste temsil edebilir , Burada bir örnek görebilirsiniz:

public class ItemLinkedList { 
    private ItemInfoNode head; 
    private ItemInfoNode tail; 
    private int size = 0; 

    public int getSize() { 
     return size; 
    } 

    public void addBack(ItemInfo info) { 
     size++; 
     if (head == null) { 
      head = new ItemInfoNode(info, null, null); 
      tail = head; 
     } else { 
      ItemInfoNode node = new ItemInfoNode(info, null, tail); 
      this.tail.next =node; 
      this.tail = node; 
     } 
    } 

    public void addFront(ItemInfo info) { 
     size++; 
     if (head == null) { 
      head = new ItemInfoNode(info, null, null); 
      tail = head; 
     } else { 
      ItemInfoNode node = new ItemInfoNode(info, head, null); 
      this.head.prev = node; 
      this.head = node; 
     } 
    } 

    public ItemInfo removeBack() { 
     ItemInfo result = null; 
     if (head != null) { 
      size--; 
      result = tail.info; 
      if (tail.prev != null) { 
       tail.prev.next = null; 
       tail = tail.prev; 
      } else { 
       head = null; 
       tail = null; 
      } 
     } 
     return result; 
    } 

    public ItemInfo removeFront() { 
     ItemInfo result = null; 
     if (head != null) { 
      size--; 
      result = head.info; 
      if (head.next != null) { 
       head.next.prev = null; 
       head = head.next; 
      } else { 
       head = null; 
       tail = null; 
      } 
     } 
     return result; 
    } 

    public class ItemInfoNode { 

     private ItemInfoNode next; 
     private ItemInfoNode prev; 
     private ItemInfo info; 

     public ItemInfoNode(ItemInfo info, ItemInfoNode next, ItemInfoNode prev) { 
      this.info = info; 
      this.next = next; 
      this.prev = prev; 
     } 

     public void setInfo(ItemInfo info) { 
      this.info = info; 
     } 

     public void setNext(ItemInfoNode node) { 
      next = node; 
     } 

     public void setPrev(ItemInfoNode node) { 
      prev = node; 
     } 

     public ItemInfo getInfo() { 
      return info; 
     } 

     public ItemInfoNode getNext() { 
      return next; 
     } 

     public ItemInfoNode getPrev() { 
      return prev; 
     } 
    } 
} 

DÜZENLEME:

bu şekilde ItemInfo bildirin:

public class ItemInfo { 
    private String name; 
    private String rfdNumber; 
    private double price; 
    private String originalPosition; 

    public ItemInfo(){ 
    } 

    public ItemInfo(String name, String rfdNumber, double price, String originalPosition) { 
     this.name = name; 
     this.rfdNumber = rfdNumber; 
     this.price = price; 
     this.originalPosition = originalPosition; 
    } 

    public String getName() { 
     return name; 
    } 

    public void setName(String name) { 
     this.name = name; 
    } 

    public String getRfdNumber() { 
     return rfdNumber; 
    } 

    public void setRfdNumber(String rfdNumber) { 
     this.rfdNumber = rfdNumber; 
    } 

    public double getPrice() { 
     return price; 
    } 

    public void setPrice(double price) { 
     this.price = price; 
    } 

    public String getOriginalPosition() { 
     return originalPosition; 
    } 

    public void setOriginalPosition(String originalPosition) { 
     this.originalPosition = originalPosition; 
    } 
} 

Sonra Düğümlerini aşağıdaki gibi kullanabilirsiniz:

public static void main(String[] args) { 
    ItemLinkedList list = new ItemLinkedList(); 
    for (int i = 1; i <= 10; i++) { 
     list.addBack(new ItemInfo("name-"+i, "rfd"+i, i, String.valueOf(i))); 

    } 
    while (list.size() > 0){ 
     System.out.println(list.removeFront().getName()); 
    } 
} 
+0

Çok teşekkürler! – John

+0

@John Rica ederim! –