Delete without head pointer Java
- Get link
- X
- Other Apps
PROGRAM TO DELETE A NODE FROM LINKED LIST WITHOUT HEAD POINTER
// C++ program to delete a node
#include <bits/stdc++.h>
using
namespace
std;
/* Link list node */
struct
Node {
int
data;
struct
Node* next;
};
// Fucntion to delete the node without head
void
deleteNodeWithoutHead(
struct
Node* pos)
{
if
(pos == NULL)
// If linked list is empty
return
;
else
{
if
(pos->next == NULL) {
printf
(
"This is last node, require head, can't be freed\n"
);
return
;
}
struct
Node* temp = pos->next;
// Copy data of the next node to current node
pos->data = pos->next->data;
// Perform conventional deletion
pos->next = pos->next->next;
free
(temp);
}
}
// Function to print the linked list
void
print(Node* head)
{
Node* temp = head;
while
(temp) {
cout << temp->data <<
" -> "
;
temp = temp->next;
}
cout <<
"NULL"
;
}
void
push(
struct
Node** head_ref,
int
new_data)
{
/* allocate node */
struct
Node* new_node =
new
Node();
/* put in the data */
new_node->data = new_data;
/* link the old list off the new node */
new_node->next = (*head_ref);
/* move the head to point to the new node */
(*head_ref) = new_node;
}
// Driver Code
int
main()
{
/* Start with the empty list */
struct
Node* head = NULL;
// create linked 35->15->4->20
push(&head, 20);
push(&head, 4);
push(&head, 15);
push(&head, 35);
cout <<
"Initial Linked List: \n"
;
print(head);
cout << endl
<< endl;
// Delete 15 without sending head
Node* del = head->next;
deleteNodeWithoutHead(del);
// Print the final linked list
cout <<
"Final Linked List after deletion of 15:\n"
;
print(head);
return
0;
// This code has been contributed by Striver
}
OUTPUT
Initial Linked List: 35 -> 15 -> 4 -> 20 -> NULL Final Linked List after deletion of 15: 35 -> 4 -> 20 -> NULL
- Get link
- X
- Other Apps
Comments
Post a Comment