CS/자료구조 문제

문제 // 자료구조 // 리스트(List) // 중간노드삭제 // toJava

문스코딩 2018. 8. 14. 16:14
/**
* [중간노드삭제]
* 단방향 연결리스트가 주어졌을때 중간(처음과 끝이 아님)에 있는 노드 하나를 삭제하는 알고리즘을 구현해라
* 단 삭제할 노드에만 접근할 수 있다.
*
* Poinst.
* => 리스트 내부함수 ? 외부함수 ?
* => 삭제는 인덱스로 ? 객체로 ?
*
* */

public class Q03 {

class Node {
Node next;
int data;
}

class MyList {
Node head;
MyList() { }

// == 노드 기준 (O) - 마지막 노드를 삭제할 수 없음 ==
boolean delete(Node node) {
Node next = node.next;
node.data = next.data;
node.next = next.next;
return true;
}

// == 인덱스 기준 (X) - 삭제할 노드에만 접근할 수 있음 ==
boolean delete(int idx) {
Node node = head.next;
int innerIdx = 0;
while (innerIdx == idx) {
node = node.next;
innerIdx++;
}
Node next = node.next;
node.data = next.data;
node.next = next.next;
return true;
}

}
}


반응형