【Hackerrank】Delete duplicate-value nodes from a sorted linked list
2013-12-16 09:55
295 查看
You’re given the pointer to the head node of a sorted linked list, where the data in the nodes is in ascending order. Delete as few nodes as possible so that the list does not contain any value more than once. The given head pointer may be null indicating
that the list is empty.
Input Format
You have to complete the
Output Format
Delete as few nodes as possible to ensure that no two nodes have the same data. Adjust the
Sample Input
1 -> 1 -> 3 -> 3 -> 5 -> 6 -> NULL
NULL
Sample Output
Explanation
1. 1 and 3 are repeated, and are deleted.
2. Empty list remains empty.
c++ code :
that the list is empty.
Input Format
You have to complete the
Node* RemoveDuplicates(Node* head)method which takes one argument - the head of the sorted linked list. You should NOT read any input from stdin/console.
Output Format
Delete as few nodes as possible to ensure that no two nodes have the same data. Adjust the
nextpointers to ensure that the remaining nodes form a single sorted linked list. Then
returnthe head of the sorted updated linked list. Do NOT print anything to stdout/console.
Sample Input
1 -> 1 -> 3 -> 3 -> 5 -> 6 -> NULL
NULL
Sample Output
1 -> 3 -> 5 -> 6 -> NULL NULL
Explanation
1. 1 and 3 are repeated, and are deleted.
2. Empty list remains empty.
c++ code :
#include <iostream> #include<cstdio> #include<cstdlib> using namespace std; struct Node { int data; Node *next; };/* Remove all duplicate elements from a sorted linked list Node is defined as struct Node { int data; struct Node *next; } */ Node* RemoveDuplicates(Node *head) { // This is a "method-only" submission. // You only need to complete this method. if(head == NULL || head->next == NULL) return head; Node *cur = head; while(cur->next != NULL) { Node *sec = cur->next; while(sec != NULL && sec->data == cur->data) sec = sec->next; if(sec != NULL) { Node *del = cur->next; while(del != sec) { Node *_next = del->next; delete del; del = _next; } } else if(sec == NULL) { Node *del = cur->next; while(del != NULL) { Node *_next = del->next; delete del; del = _next; } } cur->next = sec; cur = sec; if(cur == NULL) break; } return head; }void Print(Node *head) { bool ok = false; while(head != NULL) { if(ok)cout<<" "; else ok = true; cout<<head->data; head = head->next; } cout<<"\n"; } Node* Insert(Node *head,int x) { Node *temp = new Node(); temp->data = x; temp->next = NULL; if(head == NULL) { return temp; } Node *temp1; for(temp1 = head;temp1->next!=NULL;temp1= temp1->next); temp1->next = temp;return head; } int main() { int t; cin>>t; while(t-- >0) { Node *A = NULL; int m;cin>>m; while(m--){ int x; cin>>x; A = Insert(A,x);} A = RemoveDuplicates(A); Print(A); } }
相关文章推荐
- [LeetCode] Remove Duplicates from Sorted Linked List 从排序链表中去掉重复值
- Insertion Sort List && Remove Duplicates from Sorted List II && Intersection of Two Linked Lists
- LeetCode_Linked List_Remove Duplicates from Sorted List II
- LeetCode_Linked List_Remove Duplicates from Sorted List
- 【Hackerrank】Insert a node into a sorted doubly linked list
- [Linked List]Remove Duplicates from Sorted List II
- LinkedList-82-Remove Duplicates from Sorted List II
- Remove Duplicates from Sorted List && Merge Two Sorted Lists && Linked List Cycle && Remove Nth Node
- 【9】Delete duplicates from an unsorted linked list
- LeetCode[Linked List]: Remove Duplicates from Sorted List II
- [Linked List]Remove Duplicates from Sorted List
- LeetCode[Linked List]: Remove Duplicates from Sorted List II
- 83. Remove Duplicates from Sorted List
- LeetCode之Remove Duplicates from Sorted List II
- Remove Duplicates from Sorted List
- Remove duplicates from sorted list
- LeetCode: Remove Duplicates from Sorted List
- [leetcode][list] Remove Duplicates from Sorted List
- 17.Remove Duplicates from Sorted List
- Remove Duplicates from Sorted List