Dolphins의 HelloWorld
Stack 본문
스택은 먼저들어간 것이 마지막에 나오는 자료구조로
흔히 LIFO(Last-in,First-out)이라고 부른다.
이 기능들을 하는 함수들을 통해 스택을 구현해보았다.
헤더파일
#ifndef __STACK_H__ #define __STACK_H__ #define SIZE 100 typedef struct _stack { int topindex; //스택의 맨위를 가르키는 변수 int arr[SIZE]; }Stack; void StackInit(Stack* stack) //스택 초기화 { stack->topindex = -1; //아무것도 없는경우 top은 -1 } void StackPush(Stack* stack, int data) { //스택에 데이터를 집어넣는 함수 stack->topindex++; //stack에 data를 집어넣을 것이므로 topindex를 하나 증가시킴 stack->arr[stack->topindex] = data; //스택에 데이터 삽입. } int isEmpty(Stack *stack) { //스택이 비어있으면 1 아니면 0을 반환 if (stack->topindex == -1) return 1; else return 0; } int pop(Stack* stack) { //스택의 데이터를 반환하면서 if (isEmpty(stack)) //만약 스택에 아무것도 없다면 -1반환 return -1; int data = stack->arr[stack->topindex]; //맨 위에있는 숫자를 data변수에 저장 stack->topindex--; //top을 아래로 한칸 내림 return data; //맨 위에 있던 수 반환 } int Peek(Stack* stack) { //마지막에 저장된 요소 반환 if (isEmpty(stack)) //비어있다면 -1반환 return -1; return stack->arr[stack->topindex]; } #endif
main
#include <stdio.h> #include "stack.h" int main() { Stack stack; StackInit(&stack); StackPush(&stack,1); StackPush(&stack, 3); StackPush(&stack,2); StackPush(&stack, 4); StackPush(&stack,5); printf("%d\n", pop(&stack)); printf("%d\n", pop(&stack)); printf("%d\n", Peek(&stack)); printf("%d\n", pop(&stack)); printf("%d\n", pop(&stack)); printf("%d\n", pop(&stack)); printf("%d\n", pop(&stack)); }
결과
'Algorithm > 알고리즘 개념' 카테고리의 다른 글
에라토스테네스의 체 (1 에서 N까지의 모든 소수 구하기), 골드바흐의 추측 (0) | 2018.08.10 |
---|---|
최대공약수와 최소공배수 (0) | 2018.08.09 |
Dynamic Programming(LIS)(Baekjoon11722) (0) | 2018.08.02 |
priority_queue 사용법 (0) | 2018.07.04 |
한줄씩 입력받기 (0) | 2018.06.25 |
Comments