양디
2016. 1. 5. 21:01
Stack : 스택
문제.
당신은 자동차를 아주 좋아하는 재벌 2세입니다. 5대의 개인 차량을 갖고 있지만, 자동차에 비해 차고가 너무 초라합니다.
슬프게도 차고가 너무 좁아서 문에 가장 가까운 차만 꺼내서 탈 수 있습니다. 이 문제를 해결하기 위해 당신은 하루에 차량을 한대씩 꺼내서
새로운 차고에 집어 넣기로 결정했습니다. 이 오래된 차고를 C 언어로 구현하시오 !
목표 결과물 :

문제 파일 :
ex4_2.c
stack.h
문제 코드 : 파일로 받는게 번거로우면 아래 파일명 클릭하여 소스 그대로 복사
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 | #include <stdio.h> #include <stdlib.h> #include "stack.h" void main() { pStack stack = makeStack(); printf("BMW를 집어 넣습니다.\n"); push(stack, makeNode("BMW")); printf("Benz를 집어 넣습니다.\n"); push(stack, makeNode("Benz")); printf("Audi를 집어 넣습니다.\n"); push(stack, makeNode("Audi")); printf("K9를 집어 넣습니다.\n"); push(stack, makeNode("K9")); printf("Genesis를 집어 넣습니다.\n\n"); push(stack, makeNode("Genesis")); printf("현재 차고 상황:\n입구 < "); printStack(stack); printf("\n오늘 차 : %s\n", pop(stack)->data); printf("내일 차 : %s\n", pop(stack)->data); printf("모레 차 : %s\n\n\n\n", pop(stack)->data); } | cs |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 | typedef struct _node { char data[20]; struct _node *next; }Node, *pNode; typedef struct _stack { int count; // 노드의 갯수를 저장한다. pNode head; // 첫번째 노드를 가리킨다. }Stack, *pStack; pStack makeStack() { //문제 } pNode makeNode(char *data) { //문제 } void push(pStack S, pNode N) { //문제 } pNode pop(pStack S) { //문제 } void printStack(pStack S) { pNode tmp = S->head; for (size_t i = 0; i < S->count; i++) { printf("%s ", tmp->data); tmp = tmp->next; } printf("\n"); } | cs |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 | typedef struct _node { char data[20]; struct _node *next; }Node, *pNode; typedef struct _stack { int count; // 노드의 갯수를 저장한다. pNode head; // 첫번째 노드를 가리킨다. }Stack, *pStack; pStack makeStack() { pStack newStack = (pStack)malloc(sizeof(Stack)); newStack->count = 0; newStack->head = NULL; return newStack; } pNode makeNode(char *data) { pNode newNode = (pNode)malloc(sizeof(Node)); newNode->next = NULL; strcpy(newNode->data, data); return newNode; } void push(pStack S, pNode N) { N->next = S->head; S->head = N; S->count++; } pNode pop(pStack S) { pNode res = S->head; S->head = S->head->next; S->count--; return res; } void printStack(pStack S) { pNode tmp = S->head; for (size_t i = 0; i < S->count; i++) { printf("%s ", tmp->data); tmp = tmp->next; } printf("\n"); } | cs |
Point !ex4_2.c 내부의 내용은 절대 건드리지 말것 !
스스로 완성하기 전에는 정답을 확인하지 말 것 !