In this post, we will discuss the code for some commonly used functions in linked lists.
Appending data at the tail:
int appendAtTail(int a){
Node* new_node = new Node();
new_node->data = a;
new_node->tail = NULL;
Node* temp = head;
while(temp->tail!=NULL)temp = temp->tail;
temp->tail = new_node;
return a;
}
What we do is pretty obvious, we create a new node, assign it the data and its tail as null. Now we create a temp pointer traverse it to the end and when reached the last node, we assign this node's tail the pointer to the new node.
It is clearly a task of O(N) complexity.
It is clearly a task of O(N) complexity.
At a location in between:
void addAt(int location, int a){
if(location==0){ // in case the location is zero we append at to the head
appendathead(a);
return;
}else{
Node* temp = head;
int x = location-1;
while(x--){
if(temp == NULL){
cout << "Index out of bounds" << '\n';
return;
}
temp = temp->tail;
} // the code till now was to get the temp to correct previous node location
Node* new_node = new Node(); // create a new node
new_node-> data = a;
new_node-> tail = temp->tail; // first assign the new node the correct tail
temp->tail = new_node;
}
}
I think you should try to understand how this code works, and what it does. I have commented it properly for your help.
No comments:
Post a Comment