Skip to content

Instantly share code, notes, and snippets.

@olund
Last active August 29, 2015 13:56
Show Gist options
  • Save olund/9139722 to your computer and use it in GitHub Desktop.
Save olund/9139722 to your computer and use it in GitHub Desktop.
template<typename T>
void List<T>::insertAt(T data, int pos) {
// Om pos = 0, lägg först
// Listan är tom: lägg först
// Pos > antalet noder, lägg sist
// pos > & <= antalet noder lägg emellan.
// skapa en ny nod
if(pos < 0) {
throw "Exception: Posiotion is negative";
}
Node *node = new Node(data);
if(pos = 0 || this->first = nullptr) {
// lägg noden först
// Om listan har element åt höger
Node->next = this->first; // Då hamnar nodens next på rätt plats för att hålla alla andra.
this->first = node; // First blir node.
// DÅ ser det ut såhär
/*
first
(Nya node) -> alla andra gamla
*/
} else {
// Skapa en walker som pekar på first
Node *walker = this->first;
// Stega med walker till pos -1
for(int i = 0; i < pos - 1; i++) {
walker = walker->next;
}
node->next = walker->next;
walker->next = node;
}
this->nrOfNodes++;
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment