updated linked-list-3 with position delete

master
Furkan Türkal 7 years ago
parent 3d001ad069
commit 414dbf08f0

@ -56,25 +56,25 @@ func Push(head_ref **Node, new_data int) {
*head_ref = new_node
}
func DeleteNode(head_ref **Node, key int) {
func DeleteNodeWithData(head_ref **Node, delete_data int) {
//Store head node
temp := *head_ref
prev := *head_ref
//If head node itself holds the key to be deleted
if(temp != nil && temp.data == key){
//If head node itself holds the delete_data to be deleted
if(temp != nil && temp.data == delete_data){
*head_ref = temp.next;
temp = nil
return
}
//Search for the key to be deleted, keep track of the previous node as we need to change prev->next
for(temp != nil && temp.data != key){
//Search for the delete_data to be deleted, keep track of the previous node as we need to change prev->next
for(temp != nil && temp.data != delete_data){
prev = temp
temp = temp.next
}
// If key was not present in linked list
// If delete_data was not present in linked list
if(temp == nil){
return
}
@ -85,6 +85,45 @@ func DeleteNode(head_ref **Node, key int) {
temp = nil
}
func DeleteNodeWithPosition(head_ref **Node, delete_position int){
//If LinkedList is empty
if(*head_ref == nil){
return
}
//Store head node
temp := *head_ref
//If head needs to be removed
if(delete_position == 0){
*head_ref = temp.next
temp = nil
return
}
//Find previous node of the node to be deleted
for i := 0; temp != nil && i < delete_position - 1; i++ {
temp = temp.next
}
//If position is more than number of nodes
if(temp == nil || temp.next == nil){
return
}
//Node temp->next is the node to be deleted, Store pointer to the next of node to be deleted
next := temp.next.next
//Unlink the node from linked list
temp.next = nil
//Unlink the deleted node from list
temp.next = next
}
//This function prints contents of linked list starting from the given node
func printList(n *Node){
for n != nil {
@ -106,11 +145,15 @@ func main() {
Push(&head, 2)
Push(&head, 8)
fmt.Println("Created LinkedList is: ")
printList(head)
DeleteNode(&head, 1)
DeleteNodeWithData(&head, 1)
DeleteNodeWithPosition(&head, 4)
fmt.Println("LinkedList after Deletion of 1: ")

Loading…
Cancel
Save