c로 스택 구현

2021. 9. 16. 17:06·SW/C, C++

지인이 나중에 자료구조 배우면 스택, 큐 기타 등등 아무튼 미리 한번 해보라고 스택 작동방식? 을 조금 알려주셨습니다. 그리고 c로 저보고 구현해보라고 하셔서 해봤습니다.

 

 

하는데 대충 1시간 40분 정도 걸렸던 거 같습니다. 그리고 제가 아직 포인터를 잘 못 다뤄서 구조체를 사용하여 구현하는 방식은 나중에 더 배우고 해 보겠습니다.

 

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int stack[5];
int top = 0; // 현 index 위치. (쌓은 높이)

int Check_Empty()  //스택 공백일때 오류검출
{
    if (top == 0) //에러 나면
    {
        printf("\n\nStack Empty\n\n"); //에러 문구 출력
        return 0;
    }
    else //에러 없으면
    {
        return 1;
    }
    
    
}

int Check_Full() //스택 꽉찼을때 에러문구 출력 
{
    if (top > 4) //꽉찼으면 
    {
        printf("\n\nStack Full\n\n");
        return 0;
    }
    else //에러 없으면
    {
        return 1;
    }
  
}

int push(int data) //스택에 원소 추가
{
    if (Check_Full())
    {
        stack[top++] = data;
    }
    else
    {
       
    }
}

int pop() //스택에 원소 제거
{
    if (Check_Empty())
    {
        top--;
    }
    
}

int printStack() //스택 모든 원소 출력
{
    if (Check_Empty())
    {

        printf("\n");
        for (int i = 0; i < top; i++)
        {
            printf("%d ", stack[i]);
        }
        printf("\n\n");
    }
}



int main()
{
    int a;
    int num;
    while (1)
    {
        printf("\npush은 1번\npop은2번\n스택출력은 3번\n4번은 종료\n");
        scanf("%d", &a);
        switch (a) {

        case 1:
            printf("\n\n값 입력: ");
            scanf("%d", &num);
            push(num);

            continue;
        case 2:
            pop();
            continue;
        case 3:
            printStack();
            continue;
        case 4:
            break;
        }
        break;
    }
}

 

본 게시물은 제가 공부한 내용을 올린 글이라 내용이 틀리거나 오류가 있을 수도 있습니다. 만약 그럴 시 jaewonahn1234@gmail.com으로 피드백해주시면 감사하겠습니다.

 

 

 

'SW > C, C++' 카테고리의 다른 글

(C언어) atof() atol() atoi() 함수  (0) 2021.12.30
'SW/C, C++' 카테고리의 다른 글
  • (C언어) atof() atol() atoi() 함수
JaewonAhn
JaewonAhn
  • JaewonAhn
    JwAhn_Embedded
    JaewonAhn
  • 전체
    오늘
    어제
    • 분류 전체보기 (136)
      • MCU (21)
        • esp32 (6)
        • stm32 (15)
      • SW (30)
        • 백준 (27)
        • C, C++ (2)
        • 자료구조 (0)
        • 파이썬 (1)
      • Tool (2)
        • KiCAD (0)
        • Git (0)
        • Visual Studio Code (1)
        • CubeIDE (1)
      • Balancing robot (28)
        • HW (11)
        • FW&SW (2)
        • 일지 (13)
        • 이론공부 (1)
      • 1&2학년 (17)
        • 1학년(2021) (2)
        • 2학년(2022) (4)
        • [2022 03 ~ 09] IoT Project (8)
        • [2022 09 ~ 12] 융합 프로젝트 (3)
      • 2025(학부 3학년) (14)
        • 신호 및 시스템 (1)
        • 전자회로 (0)
        • 제어 및 AI 입문 (3)
        • 임베디드시스템 (8)
        • 기타 (2)
      • 잡솔 (3)
      • 군대 (7)
        • 이등병 (1)
        • 일병 (4)
        • 병장 (2)
      • Driving_Assistance_Device (14)
        • Hailo (7)
        • 일지 (3)
        • 기타 (4)
  • 블로그 메뉴

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

  • 공지사항

  • 인기 글

  • 태그

    vscode
    백준
    뇌절
    9012
    nucelo
    쇠막대기
    10828
    WiFi.local() to char
    이계도함수
    10799
    스택
    10866
    Arduino
    headerfile
    합성함수의 미분법
    library
    10845
    plotly
    arudino
    2학년
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
JaewonAhn
c로 스택 구현
상단으로

티스토리툴바