자료 저장소

# 연결리스트 큐

LinkedQueue.cpp

연결된 큐는 배열로 구현된 큐에 비하여 크기가 제한되지 않는다는 장점을 지니고 있다.
front 포인터는 삭제와 관련되며 rear 포인터는 삽입과 관련된다. front는 연결리스트의 맨 앞에 있는 요소를
가리키며 rear 포인터는 맨 뒤에 있는 요소를 가리킨다.

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

typedefint element;

typedefstruct QueueNode
{
element item;
QueueNode *link;
}QueueNode;

typedefstruct
{
QueueNode *front, *rear;
}QueueType;

void Init(QueueType *q)
{
q->front=q->rear=NULL;
}

int is_empty(QueueType *q)
{
return (q->front==NULL);
}

int is_full(QueueType *q)
{
return0;
}

void Enqueue(QueueType *q, element item)
{
QueueNode *temp=(QueueNode*)malloc(sizeof(QueueNode));

temp->item=item;
temp->link=NULL;

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

element Dequeue(QueueType *q)
{
QueueNode *temp = q->front;
element item;

if(is_empty(q))
{
printf("큐가 비어있습니다\n");
return -1;
}

item=temp->item;
q->front=q->front->link;

if(q->front==NULL)
q->rear=NULL;

free(temp);

return item;
}

int main()
{
QueueType q;
int i;

Init(&q);

for(i=0;i<5;i++)
{
Enqueue(&q,i);
printf("큐 삽입 :%d \n",i);
}

for(i=0;i<5;i++)
printf("큐 삭제 :%d\n",Dequeue(&q));

return0;
}
댓글 로드 중…

최근에 게시된 글