Input linked list C++
inserting a node at the end of a linked listThe new node will be added at the end of the linked list. Show
ExampleInputLinked List : 10 20 30 40 NULL. 50 OutputLinked List : 10 20 30 40 50 NULL. InputLinked List : NULL 10 OutputLinked List : 10 NULL Algorithm1. Declare head pointer and make it as NULL. 2. Create a new node with the given data. And make the new node => next as NULL. 3. If the head node is NULL (Empty Linked List), make the new node as the head. 4. If the head node is not null, (Linked list already has some elements), find the last node. make the last node => next as the new node. 1. Declare head pointer and make it as NULL.struct node
{
int data;
struct node *next;
};
struct node *head = NULL;
2. Create a new nodevoid addLast(struct node **head, int val)
{
//create a new node
struct node *newNode = malloc(sizeof(struct node));
newNode->data = val;
newNode->next = NULL;
}
3. If the head node is NULL, make the new node as headvoid addLast(struct node **head, int val)
{
//create a new node
struct node *newNode = malloc(sizeof(struct node));
newNode->data = val;
newNode->next = NULL;
//if head is NULL, it is an empty list
if(*head == NULL)
*head = newNode;
}
Visual RepresentationLet's insert data 10. The head is NULL initially. 1. The new node with data as 10 and reference is NULL (address 1024). 2. Since it is the first node, make the head node points to the newly allocated node. 4. Otherwise, find the last node and set last node => new nodeThe last node of a linked list has the reference pointer as NULL. i.e. node=>next = NULL. To find the last node, we have to iterate the linked till the node=>next != NULL. Pseudocode while(node->next != NULL)
{
node = node->next;
}
After that, we have to make the last node-> next as the new node. i.e. last node->next = new node; void addLast(struct node **head, int val)
{
//create a new node
struct node *newNode = malloc(sizeof(struct node));
newNode->data = val;
newNode->next = NULL;
//if head is NULL, it is an empty list
if(*head == NULL)
*head = newNode;
//Otherwise, find the last node and add the newNode
else
{
struct node *lastNode = *head;
//last node's next address will be NULL.
while(lastNode->next != NULL)
{
lastNode = lastNode->next;
}
//add the newNode at the end of the linked list
lastNode->next = newNode;
}
}
Visual RepresentationLet's insert data 20. 1. The head points to the memory address 1024 and it is the last node. 2. The new node with data as 20 and reference is NULL (address 2024). set last node =>next = new node. The new node added at the end of the linked list. 3. Finally, the new linked list. Let's insert data 30. 1. The head points to the memory address 1024 and it has two nodes. 2. The new node with data as 30 and reference is NULL (address 3024). Find the last node using the loop and make the last node points to the newly allocated node. In our case, the last node is 20 (address 2024). So, last->next = 30 (address 3024). 3. Finally, the new linked list. Implementation of inserting a node at the end of a linked listExample #include
void addLast(struct node **head, int val)
{
//create a new node
struct node *newNode = malloc(sizeof(struct node));
newNode->data = val;
newNode->next = NULL;
//if head is NULL, it is an empty list
if(*head == NULL)
*head = newNode;
//Otherwise, find the last node and add the newNode
else
{
struct node *lastNode = *head;
//last node's next address will be NULL.
while(lastNode->next != NULL)
{
lastNode = lastNode->next;
}
//add the newNode at the end of the linked list
lastNode->next = newNode;
}
}
void printList(struct node *head)
{
struct node *temp = head;
//iterate the entire linked list and print the data
while(temp != NULL)
{
printf("%d->", temp->data);
temp = temp->next;
}
printf("NULL\n");
}
int main()
{
struct node *head = NULL;
addLast(&head,10);
addLast(&head,20);
addLast(&head,30);
printList(head);
return 0;
}
Run it Page -- Page ++ Topics You Might Like |