03장.스택.key

Similar documents
03장.스택

5.스택(강의자료).key

untitled

슬라이드 1

4장

Microsoft PowerPoint - 07-chap05-Stack.ppt

untitled

K&R2 Reference Manual 번역본

o 스택 (stack) ~ 쌓아놓은더미 1. 스택의개요 - 2 -

C프로-3장c03逞풚

chap01_time_complexity.key


PowerPoint 프레젠테이션

; struct point p[10] = {{1, 2, {5, -3, {-3, 5, {-6, -2, {2, 2, {-3, -3, {-9, 2, {7, 8, {-6, 4, {8, -5; for (i = 0; i < 10; i++){ if (p[i].x > 0 && p[i

데이터구조 (Chapter 3: Stacks and Queues) 2011 년봄학기 숙명여자대학교이과대학멀티미디어과학과박영호

untitled

PowerPoint 프레젠테이션

chap x: G입력

06장.리스트

13주-14주proc.PDF

본 강의에 들어가기 전

int main(void) int a; int b; a=3; b=a+5; printf("a : %d \n", a); printf("b : %d \n", b); a b 3 a a+5 b &a(12ff60) &b(12ff54) 3 a 8 b printf(" a : %x \

Microsoft PowerPoint - 제5장-스택의응용.pptx

chap x: G입력

Microsoft PowerPoint - 제4장-스택과큐.pptx

(Microsoft Word - \301\337\260\243\260\355\273\347.docx)

프로그램을 학교 등지에서 조금이라도 배운 사람들을 위한 프로그래밍 노트 입니다. 저 역시 그 사람들 중 하나 입니다. 중고등학교 시절 학교 도서관, 새로 생긴 시립 도서관 등을 다니며 책을 보 고 정리하며 어느정도 독학으르 공부하긴 했지만, 자주 안하다 보면 금방 잊어


Microsoft PowerPoint - ch07_스택 [호환 모드]

untitled

: 1 int arr[9]; int n, i; printf(" : "); scanf("%d", &n); : : for(i=1; i<10; i++) arr[i-1] = n * i; for(i=0; i<9; i++) if(i%2 == 1) print

Microsoft PowerPoint - ch09 - 연결형리스트, Stack, Queue와 응용 pm0100

02장.배열과 클래스


歯9장.PDF

OCaml

untitled

Microsoft PowerPoint - chap13-입출력라이브러리.pptx

< E20C6DFBFFEBEEE20C0DBBCBAC0BB20C0A7C7D12043BEF0BEEE20492E707074>

chap7.key

PowerPoint 프레젠테이션

구조체정의 자료형 (data types) 기본자료형 (primitive data types) : char, int, float 등과같이 C 언어에서제공하는자료형. 사용자정의자료형 (user-defined data types) : 다양한자료형을묶어서목적에따라새로운자료형을

chap8.PDF

untitled

0. 표지에이름과학번을적으시오. (6) 1. 변수 x, y 가 integer type 이라가정하고다음빈칸에 x 와 y 의계산결과값을적으시오. (5) x = (3 + 7) * 6; x = 60 x = (12 + 6) / 2 * 3; x = 27 x = 3 * (8 / 4

商用

PowerPoint 프레젠테이션

Microsoft PowerPoint - Chapter_09.pptx

Chapter_06

chap 5: Trees

Microsoft PowerPoint - chap05-제어문.pptx

, ( ),, ( ), 3, int kor[5]; int eng[5]; int Microsoft Windows 4 (ANSI C2 ) int kor[5] 20 # define #define SIZE 20 int a[10]; char c[10]; float

chap10.PDF

중간고사

04장.큐

untitled

Chapter 4. LISTS

Chapter 4. LISTS

기초컴퓨터프로그래밍

11장 포인터

03_queue

Microsoft PowerPoint - chap12-고급기능.pptx

(Asynchronous Mode) ( 1, 5~8, 1~2) & (Parity) 1 ; * S erial Port (BIOS INT 14H) - 1 -

Microsoft PowerPoint - chap10-함수의활용.pptx

금오공대 컴퓨터공학전공 강의자료

A Hierarchical Approach to Interactive Motion Editing for Human-like Figures

<4D F736F F F696E74202D20C1A63132B0AD20B5BFC0FB20B8DEB8F0B8AEC7D2B4E7>

Microsoft PowerPoint - chap11-포인터의활용.pptx

3장. Hello World

UI TASK & KEY EVENT

02 C h a p t e r Java

Line (A) å j a k= i k #define max(a, b) (((a) >= (b))? (a) : (b)) long MaxSubseqSum0(int A[], unsigned Left, unsigned Right) { int Center, i; long Max

C 언어 프로그래밊 과제 풀이

3. 1 포인터란 3. 2 포인터변수의선언과사용 3. 3 다차원포인터변수의선언과사용 3. 4 주소의가감산 3. 5 함수포인터

lecture4(6.범용IO).hwp

Java

Javascript.pages

Microsoft PowerPoint - ch10 - 이진트리, AVL 트리, 트리 응용 pm0600

이번장에서학습할내용 동적메모리란? malloc() 와 calloc() 연결리스트 파일을이용하면보다많은데이터를유용하고지속적으로사용및관리할수있습니다. 2

PowerPoint 프레젠테이션

<C3CA3520B0FAC7D0B1B3BBE7BFEB202E687770>

2007백서-001-특집

¾Ë·¹¸£±âÁöħ¼�1-ÃÖÁ¾

01....b

00목차

(291)본문7

Chapter 4. LISTS

PowerPoint 프레젠테이션

Algorithms

[ 마이크로프로세서 1] 2 주차 3 차시. 포인터와구조체 2 주차 3 차시포인터와구조체 학습목표 1. C 언어에서가장어려운포인터와구조체를설명할수있다. 2. Call By Value 와 Call By Reference 를구분할수있다. 학습내용 1 : 함수 (Functi

À©µµ³×Æ®¿÷ÇÁ·Î±×·¡¹Ö4Àå_ÃÖÁ¾

중간고사 (자료 구조)

05_tree

Microsoft PowerPoint - 3ÀÏ°_º¯¼ö¿Í »ó¼ö.ppt

<443A5C4C C4B48555C B3E25C32C7D0B1E25CBCB3B0E8C7C1B7CEC1A7C6AE425CC0E7B0EDB0FCB8AE5C53746F636B5F4D616E D656E74732E637070>

PowerPoint 프레젠테이션

비트와바이트 비트와바이트 비트 (Bit) : 2진수값하나 (0 또는 1) 를저장할수있는최소메모리공간 1비트 2비트 3비트... n비트 2^1 = 2개 2^2 = 4개 2^3 = 8개... 2^n 개 1 바이트는 8 비트 2 2

Microsoft PowerPoint - Chapter_08.pptx

Microsoft PowerPoint - [2009] 02.pptx

11강-힙정렬.ppt

Transcription:

---------------- DATA STRUCTURES USING C ---------------- 03CHAPTER 1

? (stack): (LIFO:Last-In First-Out) 2

: top : ( index -1 ),,, 3

: ( ) ( ) -> ->. ->.... 4

Stack ADT : (LIFO) : init():. is_empty(): TRUE FALSE. is_full(): TRUE FALSE. size():. push(x): x. pop():. peek():. 5

(push), (pop) is_empty(): is_full(): peek(s): ( ) pop. 6

Undo 7

(Undo) - LAB ^+Z Comm+Z 8

1 stack[ ] top: stack[0] stack[top]: top -1 9

Push C 4 4 3 3 2 2 C top 1 B top 1 B 0 A 0 A push(x) if is_full(s) then error "overflow" else top top+1 data[top] x 10

Pop 4 4 3 3 2 C top 2 1 B 1 B top 0 A 0 A pop() if is_empty() then error "underflow" else e data[top] top top-1 return e 11

data[] top! typedef int Element; Element data[max_stack_size]; int top; int is_empty() { if( top == -1 ) return 1; else return 0; } void init_stack() { top = -1; } int size() { return top+1; } int is_empty() { return (top == -1); } int is_full() { return (top == MAX_STACK_SIZE-1); } 12

void push ( Element e ) { if( is_full() ) error (" "); data[++top] = e; } Element pop ( ) { if( is_empty() ) error (" "); return data[top--]; } Element peek ( ) { if( is_empty() ) error (" "); return data[top]; } void print_stack(char msg[]) { int i; printf("%s[%2d]= ", msg, size()) ; for (i=0 ; i<size() ; i++ ) printf("%2d ", data[i]); printf("\n"); } 13

void main() { int i; init_stack(); for( i=1 ; i<10 ; i++ ) push( i ); print_stack(" push 9 "); printf("\tpop() --> %d\n", pop()); printf("\tpop() --> %d\n", pop()); printf("\tpop() --> %d\n", pop()); print_stack(" pop 3 "); } 14

Lab ex3.1 15

Element typedef struct Student_t { int id; char name[32]; char dept[32]; } Student; typedef Student Element; void print_stack(char msg[]) { int i; printf("%s[%2d]= ", msg, size()) ; for (i=0 ; i<size() ; i++ ) printf("\n\t%-15d %-10s %-20s", data[i].id, data[i].name, data[i].dept); printf("\n"); } 16

Student get_student(int id, char* name, char* dept) { Student s; s.id = id; strcpy(s.name, name); strcpy(s.dept, dept); return s; } void main() { init_stack( ); push( get_student(2015130007, " ", " ") ); push( get_student(2015130100, " ", " ") ); push( get_student(2015130135, " ", " ") ); push( get_student(2015130135, " ", " ") ); print_stack(" 4 "); pop( ); print_stack(" 1 "); } 17

Lab ex3.2 18

19

20

: : ( [, ] ), ( {, } ), ( (, ) )... (a(b) a(b)c) a{b(c[d]e}f) 21

23

, top., 1 2 3. 1 0( ), 1( ). 24

check_matching(expr) while ( expr ) ch expr switch(ch) case '(': case '[': case '{': ch break case ')': case ']': case ']': if ( ) then else open_ch break if( ) then if (ch open_ch ) then 25

void main() { char expr[4][80] = { "{A[(i+1)]=0;}", "if((i==0) && (j==0)", "A[(i+1])=0;", "A[i] =f)(;" }; int err, i; for( i=0 ; i<4 ; i++ ) { err = check_matching(expr[i]); if( err == 0 ) printf(" : %s\n", expr[i]); else printf(" : %s ( %d )\n", expr[i], err); } } 26

Lab - ex3.3 27

28

: (prefix), (infix), (postfix) 2+3*4 +2*34 234*+ a*b+5 +5*ab ab*5+ (1+2)+7 +7+12 12+7+ -> -> 2+3*4 -> 234*+ -> 14 29

Calc_postfix (expr) ; for in expr do if ( ) s.push(item); if ( op ) then second pop(); first pop(); result pop(); temp first op second; // op +-*/ push(temp); 30

31

double calc_postfix( char expr[] ) {... init_stack( ); while( expr[i]!= '\0' ) { c = expr[i++]; if (c>='0' && c<='9') { val = c - '0'; push( val ); } else if( c=='+' c=='-' c=='*' c=='/' ){... switch( c ) { case '+': push( val1 + val2); break;... } void main() { char expr[2][80] = { "8 2 / 3-3 2 * +", "1 2 / 4 * 1 4 / *" }; printf(" : %s = %lf\n", expr[0], calc_postfix(expr[0])); printf(" : %s = %lf\n", expr[1], calc_postfix(expr[1])); } 32

: ( ) 2+3*4 -> 234*+ 33

! 34

35

Infix_to_postfix(expr). while (expr ) term ; switch (term) case : term ; break; case : push(term); break; case : e pop(); while( e ) do e ; e pop(); break; case : while ( peek() term ) do e pop(); e ; push(term); break; while( not is_empty() ) do e pop(); e ; 36

static int precedence( char op ) { switch (op) { case '(' : case ')' : return 0; case '+' : case '-' : return 1; case '*' : case '/' : return 2; } return -1; } void infix_to_postfix( char expr[] ) {...} void main() { char expr[2][80] = { "8/2-3+(3*2)", "1/2* 4 * (1/4)" }; printf(" : %s ==> :", expr[0]); infix_to_postfix(expr[0]); printf(" : %s ==> :", expr[1]); infix_to_postfix(expr[1]); } 37

38