Forum: PC-Programmierung addAtTheEnd(ValueElement value) doppelt verkettete liste


von jimmo (Gast)


Lesenswert?

hallo,
ich soll eine addAtTheEnd Methode implementieren,
Head soll immer auf das letzte Element zeigen.

zur Zeit sieht mein Programm so aus:
1
ublic class List implements IList 
2
{
3
   private IListElement head;
4
   private IListElement current;
5
   private int count;
6
    
7
    
8
   public List()
9
   {
10
       
11
       head = new ListElement(null);
12
       head.setValueElement(null);
13
  count = 0;
14
   }
15
16
    public IListElement getHead() 
17
    {
18
  IValueElement value = null;
19
  if(head != null)
20
      value = new ValueElement(null, 0);
21
      head.setValueElement(value);
22
  return head;
23
    }
24
     
25
 
26
    public void insertAtTheEnd(IValueElement value)
27
    {
28
  IListElement newElem = new ListElement(value);
29
  value = (value != null ? value : new ValueElement("nullvalue", 1));
30
  
31
  if(count == 0)
32
  {
33
     current = newElem;
34
     head.setSuccessor(current);
35
     head.setPredecessor(current);
36
     head.getSuccessor().setPredecessor(head);
37
     current.setSuccessor(null);
38
     
39
  }   
40
  if(count == 1)
41
  {
42
      
43
    newElem.setPredecessor(head.getPredecessor());
44
    head.setPredecessor(newElem);
45
    head.getPredecessor().setSuccessor(null);
46
    newElem.setSuccessor(null);
47
    head.getSuccessor().setSuccessor(head.getPredecessor());

Bis dahin würde ich sagen dass es auch funktioniert, jedoch ist die 
Aufgabenstellung, dass nach dreimaligem Einfügen, muss der Vorgänger des 
Kopfes das zuletzt eingefügte ValueElement sein.

Dies funktioniert leider nicht
1
 
2
    if(count == 2)
3
    {
4
        newElem.setPredecessor(head.getPredecessor());
5
        head.setPredecessor(newElem);
6
    }

könnte mir jmd einen Tipp geben?
Vielen Dank

von jimmo (Gast)


Lesenswert?

hat sich erledigt:
1
if(count == 0)
2
  {
3
     current = newElem;
4
     head.setSuccessor(current);
5
     head.setPredecessor(current);
6
     head.getSuccessor().setPredecessor(head);
7
     current.setSuccessor(null);
8
     
9
  }   
10
  if(count >= 1)
11
  {
12
     newElem.setPredecessor(head.getPredecessor());
13
     newElem.setSuccessor(null);
14
     head.getPredecessor().setSuccessor(newElem);
15
     head.setPredecessor(newElem);
16
  }
17
  count++;
18
    }
danke

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.