모두의 코드 커뮤니티

Pointer = pointer?

안녕하세요 선생님

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

struct Node* head; // global variable - pointer to head node.

//Creates a new Node and returns pointer to it.
struct Node* GetNewNode(int x) {
struct Node* newNode
= (struct Node*)malloc(sizeof(struct Node));
newNode->data = x;
newNode->prev = NULL;
newNode->next = NULL;
return newNode;
}

//Inserts a Node at head of doubly linked list
void InsertAtHead(int x) {
struct Node* newNode = GetNewNode(x);
if(head == NULL) {
head = newNode;
return;
}
head->prev = newNode;
newNode->next = head;
head = newNode;
}

//Inserts a Node at tail of Doubly linked list
void InsertAtTail(int x) {
struct Node* temp = head;
struct Node* newNode = GetNewNode(x);
if(head == NULL) {
head = newNode;
return;
}
while(temp->next != NULL) temp = temp->next; // Go To last Node
temp->next = newNode;
newNode->prev = temp;
}
이런 코드에서 포인터 관련으로 잘 이해가 가지 않는 것이 있습니다.
head는 이미 struct Node의 타입을 가진 데이터의 주소를 가리키는 포인터인데요, newNode 또한 마찬가지입니다. 그런데 head=newNode;라고 적혀있는 줄이 있는데요, 이게 가능한가요??
원래는 이중 포인터를 써야 하지 않나요??ㅠㅠ

1 Like

쉽게 생각해서

실제 Node 가 있고 (포인터 말고 구조체) head 와 newNode 모두 해당 Node 구조체 변수를 가리킨다고 생각하시면 됩니다.