알고리즘/C++
5-1. 이중 연결 리스트 (Doubly Linked List)
dyeoma
2020. 7. 24. 14:12
단순 연결 리스트 단점 보완 - 전위 node 접근을 용이하게 하기 위해 양방향 연결 field 가짐
이중 연결 리스트 class 정의
class DblList; // 전방 선언
class DblListNode {
friend class DblList;
private:
int data;
DblListNode *left, *right;
};
class DblList {
public:
// 연산 함수
private:
DblListNode *first; // head node
};
이중 연결 원형 리스트 삽입
void DblList::Insert (DblListNode *p, DblListNode *x){
// node x 오른쪽에 node p 삽입
p->left = x;
p->right=x->right;
x->right->left=p;
x->right=p;
}
이중 연결 원형 리스트 삭제
void DblList::Delete(DblListNode *x){
if ( x == first ) // head node
cerr << "Deletion of headnode not permitted" << endl;
else {
x->left->right = x->right;
x->right->left = x->left;
delete x;
}
}