쌓고 쌓다

더블 링크드 리스트 삽입 본문

알고리즘/자료구조

더블 링크드 리스트 삽입

승민아 2022. 10. 6. 19:57

노드 설정

struct Node
{
	int data;
	Node* prev;
	Node* next;
};

 

GetNewNode 함수

Node* GetNewNode(int x)
{
	Node* tmp = (Node*)malloc(sizeof(Node));
	tmp->data = x;
	tmp->prev = NULL; tmp->next = NULL;
	return tmp;
}

 

전역 변수로 head 존재함.

Node* head;

 

Head에 삽입 ( 맨 앞에 )

void InsertAtHead(int x)
{
	Node* tmp = GetNewNode(x);
	if (head == NULL)
	{
		head = tmp;
		return;
	}
	head->prev = tmp;
	tmp->next = head;
	head = tmp;
}

 

Tail에 삽입 ( 맨 뒤에 )

void InsertAtTail(int x)
{
	Node* tmp = GetNewNode(x);

	if (head == NULL)
	{
		head = tmp;
		return;
	}

	Node* p = head;
	while (p->next != NULL)
	{
		p = p->next;
	}

	p->next = tmp;
	tmp->prev = p;


}
Comments