Algorithm

[C언어] 연결리스트 큐 Linked Queue

say! 2023. 1. 12. 16:34
728x90

공백 상태 > front와 rear가 NULL값

 

🟡 연결리스트로 구현한 큐 코드

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

typedef int element;
typedef struct {
	element data;
	struct StackNode* link;
}QueueNode;

typedef struct {
	QueueNode* front, *rear;
} LinkedQueueType;

void init(LinkedQueueType* s) {
	s->front = s->rear = 0;
}

int is_full(LinkedQueueType* s) {
	return 0;
}

int is_empty(LinkedQueueType* s) {
	return (s->front == NULL);
}

void push(LinkedQueueType* s, element item) {
	QueueNode* temp = (QueueNode*)malloc(sizeof(QueueNode));
	temp->data = item;
	temp->link = NULL;

	if (is_empty(s)) {
		s->front = temp;
		s->rear = temp;
	}
	else {
		s->rear->link = temp;
		s->rear = temp;
	}
	
}

element pop(LinkedQueueType* s) {
	if (is_empty(s)) {
		printf("큐가 비었습니다.\n");
		return;
	}
	else {
		QueueNode* temp = s->front;
		element data = temp->data;
		s->front = temp->link;

		if (s->front == NULL)	// 공백 상태인 경우
			s->rear = NULL;

		free(temp);
		return data;
	}
}

element peek(LinkedQueueType* s) {
	if (is_empty(s)) {
		printf("큐가 비었습니다.\n");
		return;
	}
	else {
		return s->rear->data;
	}
}

int main() {
	LinkedQueueType s;
	init(&s);
	push(&s, 1);
	push(&s, 3);
	push(&s, 6);
	printf("%d\n", pop(&s));
	printf("%d\n", pop(&s));
	return 0;
}
댓글수0