Taene's
[C++] Queue 구현 본문
#include <iostream>
using namespace std;
struct Node
{
int data; //int형 4byte
Node* next; //포인터형 (주소도 숫자이므로) 4byte
//but, Node형 포인터는 int와 포인터형 두개를 가지므로 8byte
//컴퓨터는 Node형 변수를 4+8=12byte가 아니라
//더 큰 바이트를 따라서 형태를 맞추어 8+8=16byte로 메모리를 생성한다.
};
class Queue
{
public:
Queue() : mHead(nullptr) //클래스의 멤버함수 초기화 방법(대입x)
{
}
~Queue()
{
}
void Push(int value)
{
if (mHead == nullptr)
{
mHead = new Node();
mHead->data = value;
mHead->next = nullptr;
}
else
{
Node* t = new Node();
t->data = value;
t->next = nullptr;
Node* p;
for (p = mHead; p->next != nullptr; p = p->next) {}
p->next = t;
}
}
void Pop()
{
Node* p = mHead;
mHead = p->next;
delete p;
}
Node* Front()
{
return mHead;
}
private:
Node* mHead;
};
int main()
{
Queue q;
q.Push(5);
q.Push(3);
q.Push(1);
q.Pop();
//Queue::Node* k = q.Front();
//cout << q.Front()->data;
//디버그->창->디스어셈블리, 메모리 확인하면 p의 주소 앞 뒤에
//fd fd fd fd [p의메모리 16byte] fd fd fd fd 가 붙어있다.
Node* p = new Node();
p->data = 8;
delete p;
return 0;
}
'C++ 개념 공부 > 자료구조' 카테고리의 다른 글
[C++] Linked List 직접 구현 (0) | 2023.10.22 |
---|---|
[C++] Queue 배열 구현 (0) | 2023.10.19 |
[C++] 우선순위 큐 (0) | 2023.09.07 |
[C++] 시간복잡도 (0) | 2023.09.04 |
[C++] 연결리스트 (0) | 2023.09.02 |