본문 바로가기

성우리뷰

18115)카드 스택

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

#define MAX 1000000
int moto[MAX];

struct node
{
int card;
struct node * next;
struct node * prev;
};

int main(void)
{
int num;
scanf_s("%d", &num);

int imsi;
for (int i = 0; i < num; i++)
{
scanf_s("%d", &imsi);
moto[i] = imsi;
}

struct node * head = malloc(sizeof(struct node));
head->card = 1;
head->next = NULL;
head->prev = NULL;
struct node * tail = head;

for (int i = 2; i <= num; i++)
{
struct node * noder = malloc(sizeof(struct node));
noder->card = i;
switch (moto[num-i]) {
case 1:
head->next = noder;
noder->next = NULL;
noder->prev = head;
head = noder;
if (head->prev->prev == NULL)
head->prev = tail;
break;
case 2:
noder->next = head;
if (head->prev != NULL)
{
head->prev->next = noder;
noder->prev = head->prev;
}
else
{
noder->prev = NULL;
tail = noder;
}
head->prev = noder;
break;
case 3:
tail->prev = noder;
noder->next = tail;
noder->prev = NULL;
tail = noder;
break;
}
}

while (head->prev != NULL)
{
printf("%d ", head->card);
head = head->prev;
}
printf("%d ", head->card);

return 0;
}

 

//////////////

연결리스트 쓰면 간단한 문제.

근데 다른사람들이 쓴 거 보니 큐로 했더라

'성우리뷰' 카테고리의 다른 글

연산자 끼워넣기  (2) 2020.08.04
나는야포켓몬마스타-  (3) 2020.08.04
1260)dfs bfs  (2) 2020.07.22
2328)임시)런타임에러뜸)그래프의 해시  (2) 2020.07.21
18110) 문제 난이도 매기기  (2) 2020.07.18