중복제거를 하는 정렬된 Single linked list 만들기
http://thispointer.com/remove-duplicate-elements-from-a-sorted-singly-linked-list/
Set A= {1, 2, 3, 4, 4, 5, 6, 7, 7, 7, 7, 9, 89}의 중복을 없애면, Set B={1, 2, 3, 4, 5, 6, 7, 9, 89}가 된다.
Set C={1, 2, 2, 2, 2, 5, 6, 8} 이라 할 때, 어떤 element가 중복이 되는지 발견하려면, Linked list를 모두 뒤져야함.
만약에 찾고자하는 값이 발견되었고 1),
이를 찾았다면 Linked list에서 제거한다 2),
#include <iostream> struct Node { int value; Node *next; Node(int val) { value = val; next = NULL; } }; Node * createListFromArray( int *arr, int arrSize){ Node *nodePtr = NULL; Node *rootNodePtr = NULL; Node *lastNodePtr = NULL; for (int i = 0; i < arrSize; i++) { if (!nodePtr) { nodePtr = new Node(*(ptr_i)); if (!rootNodePtr) { rootNodePtr = nodePtr; if (lastNodePtr) { lastNodePtr->next = nodePtr; } } } lastNodePtr = nodePtr; nodePtr = nodePtr->next; } return rootNodePtr; } int main(void) { int arr[] = { 1,2,3,4,4,5,6,7,7,7,7,9,89 }; Node *ptr = createListFromArray(arr, sizeof(arr)/sizeof(int));
return 0; }
|