Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- 정보처리기사
- 도커 mysql
- 알고리즘
- ansible install
- mysql on docker
- c++
- 파이썬
- python
- C언어
- 푸시푸시
- 데이터베이스
- 도커 시작하기
- java
- c
- 자바
- docker
- 앤서블 설치
- 백준
- 도커 elk
- mysql docker
- streamsets 강의
- 스트림셋
- 데이트
- elk stack
- 코딩
- 도커
- 스트림셋이란?
- MySQL
- nvidia docker
- 클라우드
Archives
- Today
- Total
리그캣의 개발놀이터
자료구조 - 수식과 STACK 사용(C언어) 본문
수식과 STACK사용
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 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 | #include <stdio.h> #include <stdlib.h> #include <string.h> typedef char element; //char를 스택 element의 자료형으로 정의 typedef struct stackNode{ //스택의 노드 구조 정의 element data; struct stackNode *link; }stackNode; stackNode *top; //스택의 top노드를 지정하기 위한 포인터 top 선언 void push(element item) //스택 삽입 연산 { stackNode *temp=(stackNode *)malloc(sizeof(stackNode)); temp->data=item; temp->link=top; top=temp; } element pop() //스택의 삭제 후 반환 연산 { element item; stackNode *temp=top; if(top == NULL){ //현재 스택이 공백 리스트인 경우 printf("\n\n Stack is empty !\n"); return 0; } else { //현재 스택이 공백리스트가 아닌경우 item = temp->data; top=temp->link; free(temp); return item; } } element peek() //스택의 top 원소 검색 연산 { element item; if(top==NULL){ //현재 스택이 공백리스트인 경우 printf("\n\n Stack is empty!\n"); return 0; } else{ //현재 스택이 공백 리스트가 아닌경우 item = top->data; return item; } } void del() //스택의 삭제 연산 { stackNode *temp; if(top==NULL){ //현재 스택이 공백 리스트인 경우 printf("\n\n Stack is empty !\n"); } else { //현재 스택이 공백 리스트가 아닌경우 temp = top; top=top->link; free(temp); } } void printStack() //스택의 내용 출력 연산 { stackNode *p = top; printf("\n STACK [ "); while(p){ printf("%d ",p->data); p=p->link; } printf("]"); } int testPair(char *exp) //수식의 괄호를 검사하는 연산 { char symbol, open_pair; int i, length=strlen(exp); top=NULL; for(i=0;i<length;i++) { symbol=exp[i]; switch(symbol){ case '(' : case '[' : case '{' : push(symbol); break; case ')' : case ']' : case '}' : if(top==NULL) return 0; else{ open_pair = pop(); if((open_pair=='('&&symbol != ')')|| (open_pair=='['&&symbol != ')')|| (open_pair=='{'&&symbol != ')')) return 0; else break; } } } if(top==NULL) return 1; else return 0; } void main(void) { char *express = "{(A+B)-3}*5+[{cos(x+y)+7}-1]*4"; printf("%s",express); if(testPair(express)==1) printf("\n\n 수식의 괄호가 맞게 사용되었습니다!"); else printf("\n\n 수식의 괄호가 틀렸습니다!"); getchar(); } | cs |
'프로그래밍 기본 > 자료구조' 카테고리의 다른 글
자료구조 - 포인터 사용 오름차 정렬[C언어] (0) | 2018.01.21 |
---|---|
자료구조 - 다항식의 덧셈(C 언어) (0) | 2018.01.21 |
자료구조-다항식 사용[C언어] (0) | 2018.01.21 |
자료구조-문자열 출력[C언어] (0) | 2018.01.21 |
자료구조-구구단 출력하기[C언어] (0) | 2018.01.21 |
Comments