큐 연결리스트로 구현하기

2019. 11. 15. 16:45PL/C++

포인터를 이용해 동적할당을 완전히 이해한 예제

영역을 할당받을 때는 매개변수로 전달할 때는 포인터 변수도 복사가 되기 때문에 포인터 변수의 주소를 넘기거나 할당된 영역을 반환받는 함수로 짜야한다

 

[참고] https://www.geeksforgeeks.org/queue-linked-list-implementation/

 

#include <cstdlib>
#include <iostream>
using namespace std;
struct Node {
int data;
struct Node *next;
};
struct Queue {
struct Node *front;
struct Node *rear;
};
struct Node *InitNode(int data) {
struct Node *tmp = (struct Node *)malloc(sizeof(struct Node));
tmp->data = data;
tmp->next = NULL;
return tmp;
}
struct Queue *createQueue(void) {
struct Queue *tmp = (struct Queue *)malloc(sizeof(struct Queue));
tmp->front = tmp->rear = NULL;
return tmp;
}
void enQueue(struct Queue *q, int data) {
struct Node *tmp = InitNode(data);
if (q->front == NULL) {
q->front = q->rear = tmp;
return;
}
q->rear->next = tmp;
q->rear = tmp;
}
struct Node *deQueue(struct Queue *q) {
struct Node *tmp = q->front;
if (tmp != NULL) {
q->front = tmp->next;
return tmp;
}
return NULL;
}
int main()
{
struct Queue* q = createQueue();
enQueue(q, 10);
enQueue(q, 20);
deQueue(q);
deQueue(q);
enQueue(q, 30);
enQueue(q, 40);
enQueue(q, 50);
struct Node* n = deQueue(q);
if (n != NULL)
printf("Dequeued item is %d", n->data);
return 0;
}

'PL > C++' 카테고리의 다른 글