간단한 Queue 학습 및 제작

2024. 9. 21. 01:27·C++
반응형
#include <iostream>
#include <queue>

using namespace std;

class _Q_Node
{
public:
	_Q_Node(int in_data=0)
	{
		next_node = nullptr;
		data = in_data;
	}

	class _Q_Node* next_node;
	int data;
};

class _Q_head 
{
public:
	_Q_head()
	{
		front	= nullptr;
		rear		= nullptr;
		size		= 0;
	}

	_Q_Node* front;
	_Q_Node* rear;
	int size;
};

void push(_Q_head* in_q, int in_data)
{
	_Q_Node* newnode = new _Q_Node(in_data);

	if (in_q->size == 0)
	{
		in_q->front = newnode;
		in_q->rear = newnode;
	}
	else
	{
		in_q->rear->next_node = newnode;
		in_q->rear = newnode;
	}
	in_q->size++;
	cout << newnode->data << "\n";
}

void pop(_Q_head* in_q)
{
	if (in_q->size == 0) cout << "-1\n";
	else
	{
		_Q_Node* deletenode = in_q->front;
		cout << deletenode->data << "\n";
		in_q->front = in_q->front->next_node;
		delete deletenode;
		in_q->size--;
	}
}

void size(_Q_head* in_q)
{
	cout<<in_q->size<<"\n";
}

void empty(_Q_head* in_q)
{
	if (in_q->size == 0)
	{
		cout << "1\n";
	}
	else
	{
		cout << "0\n";
	}
}

void front(_Q_head* in_q)
{
	if (in_q->size == 0)
	{
		cout << "-1\n";
	}
	else
	{
		cout << in_q->front->data << "\n";
	}
}

void back(_Q_head* in_q)
{
	if (in_q->size == 0)
	{
		cout << "-1\n";
	}
	else
	{
		cout << in_q->rear->data << "\n";
	}
}

int main()
{
	_Q_head* q = new _Q_head;
	int N;
	cin >> N;
	
	string cmd;
	int num;
	for (int i = 0; i < N; i++)
	{
		/**
		* ToDo
		* string을 통해 데이터를 받아 Queue로 처리하기
		*/
		cin >> cmd;

		if (cmd == "push")
		{
			cin >> num;
			push(q, num);
		}
		else if (cmd == "pop")		{ pop(q); }
		else if (cmd == "size")		{ size(q); }
		else if (cmd == "empty")	{ empty(q); }
		else if (cmd == "front")		{ front(q); }
		else if (cmd == "back")		{ back(q); }
	}

	delete q;

	return 0;
}
반응형
저작자표시 (새창열림)

'C++' 카테고리의 다른 글

c++ string을 통 특정 문자 제거  (0) 2024.11.24
string stream  (0) 2024.11.24
유클리드 호제법을 통한 최소공배수, 최대공약수 알고리즘  (0) 2024.09.16
KMP 알고리즘  (1) 2024.09.13
백준 11720번 숫자의  (0) 2024.08.27
'C++' 카테고리의 다른 글
  • c++ string을 통 특정 문자 제거
  • string stream
  • 유클리드 호제법을 통한 최소공배수, 최대공약수 알고리즘
  • KMP 알고리즘
숯불돼지왕갈비
숯불돼지왕갈비
  • 숯불돼지왕갈비
    게임 개발 공부기
    숯불돼지왕갈비
  • 전체
    오늘
    어제
    • 분류 전체보기 (303)
      • 학교수업 (165)
      • 취업강의 (6)
      • C++ (46)
        • 코딩 테스트 (4)
      • Unreal Engine 5 (25)
        • MMORPG 개발 (25)
      • Unreal Engine 4 (44)
        • Omak Project (3)
        • Unreal Engine 4 개발일지 (9)
        • Unreal Engine 4 (32)
      • Unity (1)
        • 개발 일지 (1)
      • 수학 (3)
        • 소프트웨어 공학용 수학 (3)
      • DirectX 11 (4)
      • 게임 디자인 패턴 (2)
      • 포트폴리오 (1)
      • 자격증 (1)
        • 정보처리기사 (0)
        • SQLD (0)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.0
숯불돼지왕갈비
간단한 Queue 학습 및 제작
상단으로

티스토리툴바