🚨 'C언어로 쉽게 풀어쓴 자료구조' 라는 책을 활용했던 과거 수업 필기를 정리한 것입니다.
💡 Chapter 순서는 책과 같지만 교수님의 과거 수업 내용에 따라 일부 책과 다른 내용이 있습니다.
-> Key를 찾음
// 선형 검색
p = Head
while(p != NULL)
{
if(p -> data == key) -> found!
p = p->Next
}
-> not found
※ 참고
1. 선형 검색 (linear search) -> O(n) (최선의 경우 1번, 최악의 경우 n번, 평균 n/2번)
2. 이진 검색 (binary search) -> O(lg n)
p = (Node *) malloc(sizeof(Node));
p->data = data;
// 순서 중요함
1. p->Next = Head;
2. Head = p;
1. p->Next = q->Next;
2. q->Next = p;
if(q = Head) Head = p->Next;
else q->Next = p->Next;
free(p);
p = (Node *)malloc(sizeof(Node));
p->data = data;
1. p->Next = Head;
2. p->Prev = NULL;
3. if(Head != NULL) Head->Prev = p;
4. Head = p;
1. p->Next = q-> Next;
2. p->Prev = q;
3. if(q->Next != NULL) q->Next->Prev = p;
4. q->Next = p;
DLL은 앞 원소가 무엇인지 알고 있음
1. if(p->Next != NULL){ // 뒤에 원소가 있을 때
p->Next->Prev = p->Prev;
}
2. if(p->Prev != NULL){
p->Prev->Next = p->Next;
}else Head = p->Next;
free(p);
Node *Head, *p;
Head = (Node *)malloc(sizeof(Node));
q 다음에 삽입 (q = Head 가능)
1. p->Next = q->Next;
2. p->Prev = q;
3. q->Next = p;
4. p->Next->Prev = p;
p 삭제
1. p->Prev->next = p->Next;
2. p->Next->Prev = p->Prev;
free(p);