answersLogoWhite

0


Best Answer

Given a list and a node to delete, use the following algorithm:

// Are we deleting the head node?

if (node == list.head)

{

// Yes -- assign its next node as the new head

list.head = node.next

}

else // The node is not the head node

{

// Point to the head node

prev = list.head

// Traverse the list to locate the node that comes immediately before the one we want to delete

while (prev.next != node)

{

prev = prev.next;

}

end while

// Assign the node's next node to the previous node's next node

prev.next = node.next;

}

end if

// Before deleting the node, reset its next node

node.next = null;

// Now delete the node.

delete node;

User Avatar

Wiki User

9y ago
This answer is:
User Avatar

Add your answer:

Earn +20 pts
Q: Algoritm for deleting the last element from a list?
Write your answer...
Submit
Still have questions?
magnify glass
imp
Continue Learning about Engineering

An algorithm of deleting linked list?

To delete a linked list walk through the list and delete the memory allocated to each element, remembering the next element address, and then iterating or recursing the process using the next element address, until the next element address is null.


Which function removes last element in a list?

If you are using the doubly-linked list from the STL library, then the function call:name_of_list.push_back();should delete the last element.


What is the difference between linked list and Ordinary list?

A list is an abstract data structure, usually defined as an ordered collection of data. A linked list refers to a specific implementation of a list in which each element in the list is connected (linked) to the next element.


Algorithm for finding min element in a linked list?

In a linked list, there is no way to find the "min element" or any other element with a specific property except by walking through the entire list. Of course, you could store a pointer to the min element and update that each time the list changes (add ing or deleting an element), which makes the list less generic and a tiny bit slower but is worth it if you need this min element often.Pseudocode for finding the min element (I'm assuming you're storing values and you want the element with the lowest value):ptr_minelement = null;ptr_element = ptr_firstelement;while (ptr_element != null) {if (ptr_minelement == null) or (ptr_minelement->value > ptr_element->value)ptr_minelement = ptr_element;ptr_element = ptr_element->ptr_next;}


Write algorithm to delete last node in circular linked list?

This depends on whether the list is singly or doubly(or multiply) linked, and on the actual implementation of the list. For example, you can write a CDLL(circular doubly linked list) without maintaining your beginning or ending nodes, using only a current pointer, thus this question doesn't really apply as there would be no "last" node and thus it would be like deleting any node.A typical implementation of a circular singly-linked list (CSLL) list actually maintains the pointer to the last element (hence it's FIFO nature) and thus there are both last and first nodes.This deletion is a little tricky. Consider that you have situations where the next pointer will point to the current element. On the other hand, you also have a situation where there are n-values that you have to iterate over to find the next-to-last value. Typically you would delete the first node in these lists, again dictated by the FIFO nature of these lists, but deletion of the last node is also not impossible.set struct node *last to list->endif (list->end->next == list->end){set list->end to null (leaving an empty list)} else {while(true){if(last->next == list->end){break}set last to last->next}set link->last to list->end->next (this temporarily sets list's end node to current first node)free last->next (frees the last node)set last->next to list->end (set the new last node next pointer to the first node)set list->end to last (set the list's end node to the new last node)}

Related questions

what are the various operations in linked list which can be performed on linked list?

Some common operations that can be performed on a linked list include inserting a node, deleting a node, searching for a specific node, traversing the list, and updating a node's value. Other operations may include reversing the list, merging two lists, sorting the list, and finding the length of the list.


An algorithm of deleting linked list?

To delete a linked list walk through the list and delete the memory allocated to each element, remembering the next element address, and then iterating or recursing the process using the next element address, until the next element address is null.


Which function removes last element in a list?

If you are using the doubly-linked list from the STL library, then the function call:name_of_list.push_back();should delete the last element.


What is the difference between linked list and Ordinary list?

A list is an abstract data structure, usually defined as an ordered collection of data. A linked list refers to a specific implementation of a list in which each element in the list is connected (linked) to the next element.


What is list?

Each element has a pointer to the next element, except for the last one.


What is single list?

Each element has a pointer to the next element, except for the last one.


Assuming an emty list what operations are used to delete and insert a data?

Delete is not possible for an empty list, insert is something like this: Create a new list-element. Register it as the first element of the list. Register it as the last element of the list.


What is the linklist?

A circular linked list is just a linked list in which the last element of the list is connected to the first element, so if you followed the links, you'd be following them in a circle forever.


Algorithm for finding min element in a linked list?

In a linked list, there is no way to find the "min element" or any other element with a specific property except by walking through the entire list. Of course, you could store a pointer to the min element and update that each time the list changes (add ing or deleting an element), which makes the list less generic and a tiny bit slower but is worth it if you need this min element often.Pseudocode for finding the min element (I'm assuming you're storing values and you want the element with the lowest value):ptr_minelement = null;ptr_element = ptr_firstelement;while (ptr_element != null) {if (ptr_minelement == null) or (ptr_minelement->value > ptr_element->value)ptr_minelement = ptr_element;ptr_element = ptr_element->ptr_next;}


Does binary search tree take much time than the list to delete or insert an element?

No. Binary search tree will take less time to delete or insert an element. While deleting from list, more time will be required to search for the element to be deleted but BST will work faster if the no. of elements are more. Plus it depends upon which element is to be deleted and where the element is to be added. But the average time to perform these operations will be less in BST as compared to lists


Write algorithm to delete last node in circular linked list?

This depends on whether the list is singly or doubly(or multiply) linked, and on the actual implementation of the list. For example, you can write a CDLL(circular doubly linked list) without maintaining your beginning or ending nodes, using only a current pointer, thus this question doesn't really apply as there would be no "last" node and thus it would be like deleting any node.A typical implementation of a circular singly-linked list (CSLL) list actually maintains the pointer to the last element (hence it's FIFO nature) and thus there are both last and first nodes.This deletion is a little tricky. Consider that you have situations where the next pointer will point to the current element. On the other hand, you also have a situation where there are n-values that you have to iterate over to find the next-to-last value. Typically you would delete the first node in these lists, again dictated by the FIFO nature of these lists, but deletion of the last node is also not impossible.set struct node *last to list->endif (list->end->next == list->end){set list->end to null (leaving an empty list)} else {while(true){if(last->next == list->end){break}set last to last->next}set link->last to list->end->next (this temporarily sets list's end node to current first node)free last->next (frees the last node)set last->next to list->end (set the new last node next pointer to the first node)set list->end to last (set the list's end node to the new last node)}


What is the average number of nodes access in searching for a particular element in an unordered list?

You might be lucky and find the element in the first node, but equally you might be unlucky and not find it until the last element. The average case is that it takes half the number of nodes in the list.