반응형
<아이디어>
1. 링크를 무한히 돌면서 원하는 id값과 똑같으면 data를 free시켜준다.
2. n(prev->next)값이 0이 되면 return하여 무한루프를 종료한다.
3. prev = n으로 / n = n->next로 업데이트 시켜준다.
연결 list는 초기값 세팅과 그 변수의 업데이트를 어떻게 할 것인지가 중요한 항목이다.
초기 data는 link 연결이 안되어 있기 때문에 규칙에 맞춰 변수들을 초기화 시켜준다.
반응형
int Delet_Data(int id)
{
prev = &hash_table[r]; // 첫 배열의 주소를 이전 노드로 설정한다
n = prev->next; // 첫 배열의 next에 그 다음에 들어올 노드의 주소와 연결한다.
}
이렇게 초기 세팅을 규칙에 맞춰 해놓으면 그 다음은 편해진다.
int Delete_Data(int id)
{
// 코드 작성
int r;
SCORE *prev;
SCORE *n;
SCORE *temp;
r = Get_Hash_Key(id); // r번째 방의 x 데이터를 찾아서 지운다.
prev = &Hash_table[r];
n = prev->next;
// 무한루프로 전체를 탐색하다가 id와 같은걸 찾으면 free시킨다.
for (;;)
{
if (n == (SCORE *)0x0) break;
if (id == n->id) // 찾고자 하는 id가 나타나면
{
prev->next = n->next; // 삭제할 next의 정보를 그 전 node의 next에 전달해준다
free(n); // 노드를 삭제한다.
return 1;
}
prev = n; // 초기에 세팅했던 규칙과 같은 규칙으로 변수를 업데이트해준다.
n = n->next; // 먼저 들어왔던 node(n)는 그 다음 node에 의해 이전 node(prev)로 바뀐다.
// 먼저 들어왔던 node(n)의 next 주소를 다음 node 주소와 맞춘다.
}
return -1;
}
반응형