Skip to content

연결리스트를 통한 큐 구현 #2

@0HooHI

Description

@0HooHI

#include <stdio.h>
#include <stdlib.h>

typedef struct Node {
int data;
struct Node* link;
}Node;

typedef struct {
Node* front;
Node* rear;
}Queue;

void init(Queue* q) {
q->front = NULL;
q->rear = NULL;
}

int is_empty(Queue * s) {
if (s->front == NULL) return 1;
return 0;
}

void enqueue(Queue* s, int item) {
Node* temp = (Node*)malloc(sizeof(Node));
temp->data = item;
temp->link = NULL;
if (is_empty(s)) {
s->front = s->rear = temp;
}
else {
s->rear->link = temp;
s->rear = temp;
}
}

int dequeue(Queue* q) {
if (is_empty(q)) puts("error");
else {
Node* del = q->front;
int value = del->data;
q->front = q->front->link;
if (q->front == NULL) { q->rear = NULL; }
free(del);
return value;
}
}

void print_queue(Queue* q) {
for (Node* p = q->front;p != NULL; p = p->link) {
printf("%d->", p->data);
}
printf("NULL\n");
}

int main() {
Queue que;
init(&que);

enqueue(&que, 10); print_queue(&que);
enqueue(&que, 20); print_queue(&que);
enqueue(&que, 30); print_queue(&que);
enqueue(&que, 40); print_queue(&que);

dequeue(&que); print_queue(&que);
dequeue(&que); print_queue(&que);
dequeue(&que); print_queue(&que);
dequeue(&que); print_queue(&que);

}

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions