LinkedQueue 구현
LinkedQueue 구현
구현 할 내용
데이터: 선입선출의 접근 방법을 유지하는 요소들의 모음
연산
- enqueue(e): 주어진 요소 e를 큐의 맨 뒤에 추가
- dequeue(): 큐가 비어 있지 않으면 맨 앞에 있는 요소를 삭제하고 반환
- isEmpty(): 큐가 비어 있으면 true, 그렇지 않으면 false 반환
- peek(): 큐가 비어있지 않으면 맨 앞에 있는 요소를 삭제하지 않고 반환
- display(): 큐 내의 모든 요소들을 출력함
노드 클래스
// Node.h
#include <cstdio>
class Node {
int data;
Node* link;
public:
Node (int data_ = 0) : data(data_) { link = NULL; }
int getData() {
return data;
}
Node* getLink() {
return link;
}
void setLink(Node* p) {
link = p;
}
};
LinkedQueue 클래스
// LinkedQueue.h
#include "Node.h"
class LinkedQueue {
Node *head, *tail;
public:
LinkedQueue() {
head = new Node; //??
tail = new Node; //??
}
~LinkedQueue() {
delete head;
delete tail;
}
bool isEmpty() {
if( head->getLink() == NULL) return true;
else return false;
}
void enqueue(Node* p) {
if(isEmpty()) {
head -> setLink(p);
tail = p;
} else {
tail->setLink(p);
tail = p;
}
}
Node* dequeue() {
if(isEmpty()) {
printf("queue is empty");
return NULL;
}
Node* p = head->getLink();
head = head->getLink();
return p;
}
Node* peek() {
if(isEmpty()) {
printf("queue is empty");
return NULL;
}
return head->getLink();
}
void display() {
Node* p = head->getLink();
while(p != NULL) {
printf("%d ", p->getData());
p = p->getLink();
}
printf("\n");
}
};
main.cpp
#include "LinkedQueue.h"
#include <iostream>
int main() {
LinkedQueue lq;
lq.enqueue(new Node(4));
lq.enqueue(new Node(5));
lq.display();
Node* temp = lq.dequeue();
lq.display();
temp = lq.dequeue();
lq.display();
lq.enqueue(new Node());
Node* n = lq.peek();
std::cout<<n->getData()<<std::endl;
return 1;
}
실행 결과
4 5
5
0
Leave a comment