Queue linked list

Run Settings
LanguageC
Language Version
Run Command
#include <stdio.h> #include <stdlib.h> // malloc함수(동적할당), free함수(동적해제) #define EMPTY 0 typedef struct node { int data; struct node* link; }Queue; Queue* GetNode() { //노드를 힙 지역에 만들어주는 함수 Queue* newNode = (Queue *)malloc(sizeof(Queue)); newNode->link = EMPTY; return newNode; } void Enqueue(Queue** front, Queue** rear, int data) { Queue* newNode = GetNode(); newNode->data = data; if (*front == EMPTY && *rear == EMPTY) (*front) = newNode; else (**rear).link = newNode; (*rear) = newNode; } int Dequeue(Queue** front, Queue** rear) { if ((*front == EMPTY && *rear == EMPTY)) { printf("Node is nothing!\n"); return 0; } int data_tmp = (**front).data; Queue* tmp = *front; if ((*front) == (*rear)) (*front) = (*rear) = EMPTY; else (*front) = (**front).link; free(tmp); return data_tmp; } /* int Dequeue(Queue** front, Queue** rear) { if ((*front == EMPTY && *rear == EMPTY)) { printf("Node is nothing!\n"); return 0; } int data_tmp = (**front).data; Queue** tmp = (**front).link; free(*front); if ((*front)==(*rear)) (*rear) = tmp; (*front) = tmp; return data_tmp; }*/ void empty(Queue** front, Queue** rear) { while ((*front) != EMPTY || (*rear) != EMPTY) { Dequeue(front, rear); } } void main() { // Queue Linked List : FIFO //front는 처음 노드의 주소 값(삭제), rear는 마지막 노드의 주소값(추가) Queue* front = EMPTY; Queue* rear = EMPTY; Dequeue(&front, &rear); Enqueue(&front, &rear, 10); Enqueue(&front, &rear, 20); Dequeue(&front, &rear); Dequeue(&front, &rear); Dequeue(&front, &rear); Enqueue(&front, &rear, 30); Enqueue(&front, &rear, 40); empty(&front, &rear); Dequeue(&front, &rear); }
Editor Settings
Theme
Key bindings
Full width
Lines