linked list k번째 element 찾아서 지우기(c++)
조회수 2540회
Singly Linked List 에 주어진 List 의 element(e1,e2, ... , en)들을 chain 형식으로 node들을 연결하고 element (e1, ... , en)들을 저장하는 프로그램을 짜는 것입니다. (Singly Linked List의 마지막 노드의 Link는 반드시 Null이여야 합니다.)
문제가 위와 같은데 제가 아래와 같이 한번 짜봤습니다.
#include <iostream>
#include <stdlib.h>
using namespace std;
class LinkedList {
struct Node {
int x;
Node *next;
};
public:
LinkedList() {
head = NULL;
}
void addValue(int val) {
Node *n = new Node();
n->x = val;
n->next = head;
head = n;
}
private:
Node *head;
};
int main() {
LinkedList list;
cout << " 입력할 LIst의 개수는?";
int n;
cin >> n;
if (n <= 0) return 0;
int *p = new int[n];
for (int i = 0; i < n; i++) {
list.addValue(p[i]);
}
}
위의 프로그램에서
k번째 노드를 삭제하는 프로그램
k번째 노드와 k+1번째 노드 사이에 새로운 노드를 추가하는 프로그램
을 짜는데
1.삭제하는 노드의 포인터값을 어떻게 받는지 모르겠습니다.
2.삭제 할때 delete를 쓰면 그 노드의 데이터 값이 완전히 지워지는 겁니까?
프로그램예시 좀 들어주셨으면 합니다. 공부에 참고 하겠습니다.
댓글 입력