컴공 일기122
게시글 주소: https://dev.orbi.kr/00057534660
백준 문제 풀고 있는데 링크드 큐를 이용한 응용 문제입니다. 소스코드는 대충 이렇습니다.
에러는 안 뜹니다만, 문제 조건을 조금 더 맞추어야 하기 때문에 여기서 수정을 조금 더 해야할 듯 싶습니다.
scanf는 버퍼함수라는 것을 다시한번...
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
typedef struct tagNode
{
int Data;
struct tagNode* NextNode;
}Node;
typedef struct tagLinkedQueue
{
Node* Front;
Node* Rear;
int Count;
}LinkedQueue;
void LQ_CreateQueue(LinkedQueue** Queue)
{
(*Queue) = (LinkedQueue*)malloc(sizeof(LinkedQueue));
(*Queue)->Front = NULL;
(*Queue)->Rear = NULL;
(*Queue)->Count = 0;
}
Node* LQ_CreateNode(int Data)
{
Node* NewNode = (Node*)malloc(sizeof(Node));
NewNode->Data = Data;
NewNode->NextNode = NULL;
return NewNode;
}
void LQ_Enqueue(LinkedQueue* Queue, Node* NewNode)
{
if (Queue->Front == NULL)
{
Queue->Front = NewNode;
Queue->Rear = NewNode;
Queue->Count++;
}
else
{
Queue->Rear->NextNode = NewNode;
Queue->Rear = NewNode;
Queue->Count++;
}
}
Node* LQ_Dequeue(LinkedQueue* Queue)
{
Node* Front = Queue->Front;
if (Queue->Front->NextNode == NULL)
{
Queue->Front = NULL;
Queue->Rear = NULL;
}
else
{
Queue->Front = Queue->Front->NextNode;
}
Queue->Count--;
return Front;
}
int LQ_IsEmpty(LinkedQueue* Queue)
{
return (Queue->Front == NULL);
}
int frontPrint(LinkedQueue* Queue)
{
if (Queue->Count == 0)
{
return -1;
}
else
printf("Front Queue : %d\n", Queue->Front->Data);
return 1;
}
int RearPrint(LinkedQueue* Queue)
{
if (Queue->Count == 0)
{
return -1;
}
else
printf("Rear Queue : %d\n", Queue->Rear->Data);
return 1;
}
int main()
{
Node* Popped = NULL;
LinkedQueue* Queue;
LQ_CreateQueue(&Queue);
int i = 0;
int N;
printf("연산 횟수를 입력하세요.\n");
scanf("%d", &N);
for (i = 0; i < N; i++)
{
char command[20];
scanf("%s", command);
if (strcmp("push", command) == 0)
{
int tmp=0;
scanf("%d", &tmp);
LQ_Enqueue(Queue, LQ_CreateNode(tmp));
}
else if (strcmp("pop", command) == 0)
{
Popped = LQ_Dequeue(Queue);
printf("%d\n", Popped->Data);
}
else if (strcmp("size", command) == 0)
{
printf("%d\n", Queue->Count);
}
else if (strcmp("empty", command) == 0)
{
if (LQ_IsEmpty)
printf("1\n");
else
printf("0\n");
}
else if (strcmp("front", command) == 0)
{
frontPrint(Queue);
}
else if (strcmp("back", command) == 0)
{
RearPrint(Queue);
}
}
return 0;
}
[실행결과]
10
push
1
push
2
push
3
push
4
push
5
pop
1
pop
2
pop
3
pop
4
pop
5
0 XDK (+0)
유익한 글을 읽었다면 작성자에게 XDK를 선물하세요.
-
좋아요 1 답글 달기 신고 -
좋아요 1 답글 달기 신고 -
-
왜 이미 집인거지 7 0
집가고 싶은데
-
암튼그런것임;;
-
아 ㅅ비ㅣㄹ 숙취 2 0
배아파 ㅠㅠㅠㅠ
-
이원준 진짜 신이네 2 0
처음으로 이감 풀이를 70분 안에 검토까지 끝내씀 독서 푸는 시간이 체감상 6~7분...
-
경제지문 초장부터 ㅈ박고 날렸음,, 시험 끝나고 오답할때도 어려웠는데 쉬웠다는 반응밖에 없네요
-
요즘 생명 누구 듣나요 0 1
한종철 듣고 나락 갔어서 백호나 홍준용 고민 중인데 보통은 누구 많이 듣나요
-
룸메 오늘 외박 안하나 4 0
내일 아침까지는 하거싶은데
-
다음주말에 0 1
바이브 코딩 해봐야지 만들고 싶은게 있었어
-
노베는 아니고 작년 6월까지 했었습니다 1월부터 지금까지 달렸더니 공통이 어느정도...
-
머리 안빠졌으면 좋겠다 0 0
제발
-
버즈 잃어버림 2 0
-
아 어카지 6 1
오늘도 오답 다 못하겠네 내일부터 재대로 공부하기로 했으니 흠..
-
에고이스트 해설 0 3
이원준식임?? 풀어볼까
-
뉴비 맞팔구! 6 2
잡담 태그 잘달아요 은테까지 -18명
-
자잘 0 3
난 이제 자도록 할게
-
탈릅해야되는데 3 1
하 ㅆㅂ 언제하지 같이할사람?
-
더프 어떤가요? 2 0
월욜 서프 풀어봤는데 수학하고 탐구가 너무 쉽게 나와서더프도 어제주문하고 내일...
-
오르비 할 힘도 없다 0 1
-
피램사면 1 2
30렙 될라나 경험치를 돈으로 사는거임
-
2503 물1 풀어봄
-
시대 재종 수업 필수임..?? 0 0
반수반이고 뭐고 할거없이?
-
오늘 공부 하나도 못했다 1 0
하
-
살빼야함 13 1
근데 빼기싫음
-
아시발 걍 재종 나올까 4 0
걍 집에서 사탐 끄적거리다가 롤한판 제끼고 이러면서 살까
-
3섶 0 0
언 80 미 84 화 38 생 44
-
암기꿀팁 10 2
여러분만의 암기 팁을 알려주세요 다양한 방법 시도해보려고요
-
동예아 이런다 ㅋㅋ 4 1
하 진짜 이 지문 보면서 지예아~ 생각나서 웃참하면서 풀엇음 ㅋㅋ
-
술 취한 기념 무묿ㆍ 16 1
선넘지ㄹ도 받아요
-
251120 1 0
풀어보도록 할게요
-
오르비 짱오랜만.. 0 0
재수할때 여기서 정보 얻으려고 했었는데 어느덧 지금은 24살 .. 대학가고나서...
-
오 간지나 2 2
-
감 살아있노 ㅋㅋ
-
과제하고 공부하고 이것자것 하려면 자기가 정신을 잘 잡아야해서 힘든것같음
-
나 개발점 공통 150강 다 완강하고 나서 뉴런하고 잇는데 4 0
뉴런이 이렇게 쉬웟던거엿슴?내 풀이를 기본으로 하되 보조적으로 현우진의 풀이2...
-
서울 1시간 반 걸리는데
-
아 시ㅣ발 0 0
가방 열린 채로 왔네
-
부라에서 14시간씩 갇혀서 미적과탐을 하는 나보다 국어재능충 순공2시간 확통사탐이...
-
대학가면 1 0
바로 몸키우고 테토남 될꺼임 ㅆㅂ..
-
근데 솔직히 2 1
민철쌤 너무 잘생김 그래서 강의 들을맛남
-
수학고수님 제발 help! 0 0
겨울방학때 고수탑 쭉 듣고 qedn듣는중인데 수2가 너무 이해가 안돼서 qedn...
-
그래서 잠이 안오는데 고1 2503 해볼까
-
오르비 처음 이에요.. 답변 많이 해주세요!!! 저 진짜 도움 필요해요.. 학교...
-
공부 많이 해서 의대도 갔고 외모관리도 열심히 해서 짝녀가 제 외모 자기 취향이라고...
-
어찌되었ㄷㅡㄴ 간에 집에 도착 1 0
자자리
-
님들 수학 강의 들을때 1 0
수학 문제 먼저 고민해보고 강의 들으시나요? 아니면 강의를 그냥 듣되 충실히 복습...
-
한자 거부감 가지는 사람 많아서 슬퍼 15 1
-
언매 하루에 몇시간씩 하시나요? 16 0
전 초반이라 2 -3시간 정도 하는거 같아요
-
인설약 사1과1도 ㄱㄴ함? 11 0
화지하고있는데 화학 이거 1년을파도 수능날 멘탈터지면 바로 재수행될것같음요;;;...
-
난 밤에 씻고자도 8 3
담날에 안씻은 사람처럼 생김
