Taene's

[C++] Queue 구현 본문

C++ 개념 공부/자료구조

[C++] Queue 구현

taene_ 2023. 10. 18. 23:23
#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