addAtTheEnd(ValueElement value) doppelt verkettete liste

Gast #3953015
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
Gast #3953051
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

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren