본문 바로가기
C++ 알고리즘/3. 기본 자료구조

써큘러 더블 링크드 리스트 (원형 이중 연결 리스트)

by Beijing_KingGod 2019. 9. 1.

double linked list 를 구현했다.

헤더는 항상 첫번째 node를 향하고 있다.

push_back 메소드는 맨 뒤에 노드를 추가시켜준다.

 

#include <iostream>
using namespace std;
class Node{
	friend class double_linked;
private:
    int value;
    Node* next_node;
    Node* pre_node;
	
public:
    Node(int v, Node* n, Node* p){
  		value = v;
        next_node = n;
        pre_node = p;
  	}
};

class double_linked {
	
private:
    Node* head;
    int size;

	
public:
    double_linked(){
    	size =0;
        head = NULL;
    }
    void push_back(int value){
    	Node* new_node = new Node(value, NULL, NULL);
        if(head==NULL){
        	head=new_node;
            new_node->next_node =new_node;
            new_node->pre_node = new_node;
        }else{
        	new_node->next_node = head;
            new_node->pre_node= head->pre_node;
            head->pre_node->next_node = new_node;
            head->pre_node = new_node;
        }  
        size++;
    }
    
    void search(){
    	Node* temp= head;
        for(int i=0; i<size; i++){
        	cout<<temp->value;
            temp=temp->next_node;
        }
		cout<<endl;
    }
};

int main(){
	double_linked a;
    for(int i=0; i<10; i++){
    	a.push_back(i);
    }
    
    a.search();

	system("pause");
	return 0;
}
0123456789​

댓글