Skip to content

Instantly share code, notes, and snippets.

@AVGP
Created September 29, 2010 12:28
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 1 You must be signed in to fork a gist
  • Save AVGP/602667 to your computer and use it in GitHub Desktop.
Save AVGP/602667 to your computer and use it in GitHub Desktop.
#include "ListenElement.h"
class Liste
{
public:
Liste()
{
head = NULL;
size = 0;
}
void add(int value,unsigned int position = 0)
{
if(position < 0 || position > size)
{
return; //Abbrechen, falls position ungültig ist
}
ListenElement *newElem = new ListenElement(value);
//In anderen Fällen:
if(position == 0)
{
newElem->setNext(head);
head = newElem;
}
else
{
ListenElement *current = head;
for(unsigned int i=0;i<(position-1);i++) current = current->getNext();
newElem->setNext(current->getNext());
current->setNext(newElem);
}
size++;
}
void remove(unsigned int index)
{
if(size == 0 || index < 0 || index > (size-1)) return;
if(index == 0)
{
head = head->getNext();
size--;
}
else
{
ListenElement *current = head;
for(unsigned int i=0;i<(index-1);i++) current = current->getNext();
current->setNext(current->getNext()->getNext());
delete current->getNext();
size--;
}
}
int getValue(unsigned int index)
{
ListenElement *current = head;
for(unsigned int i=0;i<index;i++)
{
current = current->getNext();
}
return current->getValue();
}
int getSize()
{
return size;
}
private:
ListenElement *head;
unsigned int size;
};
@syranez
Copy link

syranez commented Sep 29, 2010

  • unsigned int position wird selten negativ. Hoffentlich :) [1], [2]
  • Das Anfordern von Speicher ist teuer => Erst prüfen, ob Speicher gebraucht wird und dann erst anfordern [1].
  • "Aus den Augen, aus dem Sinn"? Wenn Du ein ListenElement aus der Liste entfernst, dann delere es doch auch :D [2]

[1]: Methode add
[2]: Methode remove

@AVGP
Copy link
Author

AVGP commented Sep 29, 2010

Ach gott, man sollte um 5 uhr morgens keinen Code schreiben.
Ich hab im Artikel dazu definiert: Wenn ein illegaler Index aufgerufen wird: Pech des Anwenders. Es is ja kein produktiver Code ^^
Und newElement MUSS erzeugt werden, weshalbs letzlich egal ist, ob ich ihn oben in der Funktion direkt anfordere oder weiter unten in den jeweiligen if-clauses. Gut - ich sollte das hinter das return-Statement setzen, schon wahr.

@syranez
Copy link

syranez commented Sep 29, 2010

Ach gott, man sollte um 5 uhr morgens keinen Code schreiben.

lol. Meine besten Bugs habe Ich um diese Zeit geschrieben.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment