« Delete alternate nodes in a LinkedList
Delete Alternate Nodes
Given a Singly Linked List of integers, delete all the alternate nodes in the list.
Example:
List: 10 -> 20 -> 30 -> 40 -> 50 -> 60 -> null
Alternate nodes will be: 20, 40, and 60.
Hence after deleting, the list will be:
Output: 10 -> 30 -> 50 -> null
Note :
The head of the list will remain the same.
Input format :
The first and the only line of input will contain the elements of the Singly Linked List separated by a single space and terminated by -1.
Output Format :
The only line of output will contain the updated list elements.
Input Constraints:
1 <= N <= 10 ^ 6.
Where N is the size of the Singly Linked List
Time Limit: 1 sec
Sample Input 1:
1 2 3 4 5 -1
Sample Output 1:
1 3 5
Explanation of Sample Input 1:
2, 4 are alternate nodes so we need to delete them
Sample Input 2:
10 20 30 40 50 60 70 -1
Sample Output 2:
10 30 50 70
1#include <iostream>2using namespace std;34class Node {5public:6 int data;7 Node * next;8 Node(int data){9 this -> data = data;10 this -> next = NULL;11 }1213 ~Node() {14 if(next) {15 delete next;16 }17 }18};1920void deleteAlternateNodes(Node *head) {21 Node *temp = head;22 while(temp != NULL && temp->next != NULL){23 Node *next = temp->next->next;24 temp->next = next;25 temp = temp->next;26 }27}2829Node* takeinput() {30 int data;31 cin >> data;32 Node *head = NULL, *tail = NULL;33 while(data != -1){34 Node *newNode = new Node(data);35 if(head == NULL) {36 head = newNode;37 tail = newNode;38 }39 else{40 tail -> next = newNode;41 tail = newNode;42 }43 cin >> data;44 }45 return head;46}4748void print(Node *head) {49 Node *temp = head;50 while(temp != NULL) {51 cout << temp -> data << " ";52 temp = temp -> next;53 }54 cout << endl;55}5657int main() {58 Node *head = takeinput();59 deleteAlternateNodes(head);60 print(head);61 delete head;62 return 0;63}