C언어 응용 제7주 실습 해보기 제6장.

Slides:



Advertisements
Similar presentations
3. 메소드와 변수 SCJP 자격증 프로젝트 발표자 : 최선웅. 1. 메 소 드 개 념 2. 메 소 드 양 식 3. 메 소 드 변 수 4. 메 소 드 예 제 5. 참 고 문 헌 / 자 료 목 차.
Advertisements

1 08 배열. 한국대학교 객체지향연구소 2 C 로 배우는 프로그래밍 기초 2 nd Edition 배열  동일한 자료유형의 여러 변수를 일괄 선언  연속적인 항목들이 동일한 크기로 메모리에 저장되는 구조  동일한 자료 유형이 여러 개 필요한 경우에 이용할 수 있는.
Android 프로그램개발 환경. 학습 목표 ■ 교육 목표  JDK 설치  JDK 환경 설정  Eclipse 설치  Android SDK 설치  ADT Plug-in 설치  Android Virtual Device(AVD) 설치  Android 예제 프로그램.
스택 스택 추상자료형 스택 스택의 구현 스택의 응용 한빛미디어(주).
기초C언어 제1주 실습 강의 소개, C언어 개요, Cygwin/Eclipse 사용 컴퓨터시뮬레이션학과 2016년 봄학기
ㅎㅎ 구조체 구조체 사용하기 함수 매개변수로서의 구조체 구조체 포인터와 레퍼런스 구조체 배열.
ㅎㅎ 구조체 C++ 프로그래밍 기초 : 객체지향의 시작 구조체 사용하기 함수 매개변수로서의 구조체 구조체 포인터와 레퍼런스
ㅎㅎ C++ 프로그래밍의 첫 걸음 C++로 프로그래밍한다는 것의 의미 세상에서 가장 간단한 C++ 프로그램
ㅎㅎ C++ 프로그래밍의 첫 걸음 C++ 프로그래밍 기초 : 객체지향의 시작 C++로 프로그래밍한다는 것의 의미
컴퓨터프로그래밍 1주차실습자료 Visual Studio 2005 사용법 익히기.
Image & Video processing
제14장 동적 메모리.
Report #5 - due: 4/13 다음 10*5의 희소 행렬 A, B를 고려하라.
Chapter 04. 연결 리스트(Linked List) 2
Report #2 - Solution 문제 #1: 다음과 같이 프로그램을 작성하라.
데이터 파일 C 데이터 파일과 스트림(Stream) 텍스트 파일 처리
자료 구조: Chapter 3 (2)구조체, 포인터
7 스택.
제15장 파일 입출력 문자열을 출력하는 여러가지 방법 (15-2쪽) 문자열만 처리하는 입출력 함수
스택(stack) SANGJI University Kwangman Ko
제 5 장. 스택(Stack).
Chapter 06. 스택.
1. C++ 시작하기.
8장 함수 함수의 필요성 라이브러리 함수와 사용자 정의 함수 함수의 정의, 원형, 호출 배열을 함수 인자로 전달 재귀호출.
SqlParameter 클래스 선문 비트 18기 발표자 : 박성한.
컴퓨터 프로그래밍 기초 #02 : printf(), scanf()
C++ Espresso 제12장 템플릿.
보고서 #5(제출기한: 10/14) 다음 문제를 해결하시오.
자료구조: CHAP 4 리스트 (3) 순천향대학교 컴퓨터공학과 하 상 호.
프로그래밍 랩 – 7주 리스트.
11장. 1차원 배열.
Introduction To Data Structures Using C
13. 연산자 오버로딩.
C 프로그래밍 C언어 (CSE2035) (Chap11. Derived types-enumerated, structure, and union) (1-1) Sungwook Kim Sogang University Seoul, Korea Tel:
사용자 함수 사용하기 함수 함수 정의 프로그램에서 특정한 기능을 수행하도록 만든 하나의 단위 작업
어서와 C언어는 처음이지 제14장.
C언어 응용 제10주 실습 해보기 제8장 트리.
C언어 응용 제6주 실습 해보기 제5장.
Report #3 - due: 4/6 100*100의 2개의 희소 행렬 A, B를 전달 받아서 이들의 덧셈을 구하고, 그 결과의 행렬 C를 반환하는 add_sparse_matrix(A, B, C)를 다음과 같이 작성하라. 희소 행렬은 sparse_matrix 타입으로 표현된다.
영상처리 실습 인공지능연구실.
19. 함수 포인터와 void 포인터.
Chapter6 : JVM과 메모리 6.1 JVM의 구조와 메모리 모델 6.2 프로그램 실행과 메모리 6.3 객체생성과 메모리
컴퓨터 프로그래밍 기초 - 10th : 포인터 및 구조체 -
Eclipse CDT에서 프로젝트를 Export 하고 Import 하는 방법
Lab 8 Guide: 멀티스레딩 예제 2 * Critical Section을 이용한 멀티스레딩 동기화 (교재 15장, 쪽)
자바 5.0 프로그래밍.
컴퓨터 프로그래밍 기초 - 8th : 함수와 변수 / 배열 -
문자열 컴퓨터시뮬레이션학과 2015년 봄학기 담당교수 : 이형원 E304호,
CHAP 21. 전화, SMS, 주소록.
C언어 응용 제1주 실습 해보기.
( Windows Service Application Debugging )
함수(Function) ◈ 함수의 개념 및 사용 이유 ◈ 함수 정의, 호출 및 선언 ◈ 지역변수와 전역변수 ◈ return 문
DK-128 개발환경 설정 아이티즌 기술연구소
STS 또는 Eclipse 에서 프로젝트를 Export 하고 Import 하는 방법
문자열 컴퓨터시뮬레이션학과 2016년 봄학기 담당교수 : 이형원 E304호,
기초 C언어 제14주 실습 전처리 및 비트필드, 스트림과 파일 입출력, 동적메모리와 연결 리스트
Homework #12 (1/2) 프로그램을 작성하고, 프로그램과 실행 결과를 프린트하여 제출한다.
05. General Linear List – Homework
기초C언어 제2주 실습 프로그래밍의 개념, 프로그램 작성 과정 컴퓨터시뮬레이션학과 2016년 봄학기 담당교수 : 이형원
구조체(struct)와 공용체(union)
실습과제 (변수와 자료형, ) 1. 다음 작업 (가), (나), (다)를 수행하는 프로그램 작성
동적메모리와 연결 리스트 컴퓨터시뮬레이션학과 2016년 봄학기 담당교수 : 이형원 E304호,
제 29 강 스트링(string) 다루기 s a i s . s T i h t g r i n.
1. 지역변수와 전역변수 2. auto, register 3. static,extern 4. 도움말 사용법
29장. 템플릿과 STL 01_ 템플릿 02_ STL.
어서와 C언어는 처음이지 제21장.
개정판 누구나 즐기는 C언어 콘서트 제13장 동적 메모리 출처: pixabay.
C언어 응용 제11주 실습 해보기 제9장 그래프1.
6 객체.
BoardGame 보드게임 따라가기.
Presentation transcript:

C언어 응용 제7주 실습 해보기 제6장

예제 6-1 실습하기 순차자료구조를 이용한 스택구현 순차자료구조를 이용한 스택을 구현하고 이와 연 관된 함수를 구현한다. 순차자료구조를 이용한 스택을 구현한 소스파일과 헤더파일을 따로 작성한다. 구현한 함수 목록 push : 스택에 자료 추가하기 pop : 스택에서 자료 꺼내오기 peek : 스택의 최상위 자료 읽기 del : 스택의 최상위 자료 삭제 printStack : 스택 출력

소스 목록 및 내용 arraystack.h : 스택구현에 필요한 자료형과 함수 의 원형을 선언하는 헤더 파일 arraystack.c : 스택 구현에 필요한 함수의 내용을 작성한 소스 ex0601.c : 스택을 테스트하는 main 소스 파일

실습하는 순서 Eclipse 를 실행한다. Workspace와 Perspective가 맞는지 확인 하고 맞지 않으면 수정한다. Workspace 는 D:\Lec_hwlee\Capp\y2014 이고 Perspective 는 C/C++ 이어야 한다. 프로젝트 생성 arraystack.h 파일 작성 arraystack.c 파일 작성 ex0601.c 작성 빌드 및 실행 결과 확인

소스들 사이의 연관 관계 arraystack.h ex0601.c 연결리스트 구현에 필요한 구조체와 필요한 함수의 원형을 선언한다. ex0601.c 구현된 연결리스트를 테스트 해보는 main 소스 포함한다. 포함한다. 실제 함수를 호출하여 사용한다. arraystack.c 연결리스트 구현에 필요한 함수의 내용을 작성한다.

필요한 함수 리턴 타입 함수명 매개변수 기능 void push int 새로운 원소를 스택에 추가 한다. pop 스택의 최상위 자료를 꺼내 온다. del 스택의 최상위 자료를 삭제한다. peek 스택의 최상위 자료를 읽는다. printStack 스택을 출력한다.

함수 가상 코드 push(int data) top ← top + 1; if ( top > STACK_SIZE) then overflow; else S(top) ← data; End push

함수 가상 코드 pop() if( top = 0) then underflow; else { temp ← S(top); top ← top - 1 ; return temp; } End pop

함수 가상 코드 del() if( top = 0) then underflow; else { top ← top - 1 ; } End del

함수 가상 코드 peek() if( top = 0) then underflow; else { temp ← S(top); return temp; } End pop

함수 가상 코드 printStack() write “STACK [“; for (i←0; i<=top; i++) do { write S(i) +” ”; } write “] \n”; End printStack

main 소스 코드 스택을 만들고 구현한 함수들이 정상 동작하는지 를 테스트하는 코드를 작성한다. 스택에 1,2,3을 추가한 후 peek, del, pop을 사용 하여 다시 제거한다.

main 의 가상 코드 write message PrintStack(); Push(1); Push(2); Push(3);

main 의 가상 코드 Peek(); PrintStack(); Del(); Pop();

Eclipse 실행 D:\Lec_hwl\CApp\y2014

Eclipse 실행

Workspace 확인 D:\Lec_hwl\CApp\y2014

CDT Perspective 확인 이 버튼을 클릭해서 수정 Java EE 로 되어 있음

CDT Perspective 확인 C/C++ 선택

CDT Perspective 확인 C/C++ 로 되어 있음

새 프로젝트 생성 File->New->C Project 반드시 C Project를 택할 것

프로젝트 명 설정 Ch06Ex01 Empty Project Cygwin GCC D:\Lec_hwl\capp\y2014\Ch06Ex01

프로젝트 구성 설정 Debug 버전과 Release 버전 모두 사용

생성된 빈 프로젝트

arraystack.h 추가 및 작성 Header File 선택

arraystack.h 추가 및 작성 arraystack.h 헤더 파일 명 설정

arraystack.h 추가 및 작성 자동 생성된 빈 헤더 파일 헤더가 여러 소스에서 포함되었을 때 이중으로 포함되지 않도록 하는 매크로 실제 헤더의 내용이 들어갈 위치

arraystack.h 추가 및 작성 스택 크기 및 함수 원형 선언 STACK_SIZE 매크로 상수 선언

linkedlist.c 추가 및 작성 Source File 선택

arraystack.c 추가 및 작성 Ch06Ex01 프로젝트명 확인 arraystack.c 소스 파일명 설정

arraystack.c 추가 및 작성 자동 생성된 빈 소스 파일

arraystack.c 추가 및 작성 필요한 코드 작성(빈 함수 작성) 표준 입출력 함수 헤더 배열로 구현한 스택관련 함수 헤더 스택을 위한 메모리 할당 Top을 전역변수로 선언하고, -1로 초기화한다. 필요한 각 함수의 원형에 맞게 함수의 몸체를 작성하되, 내용은 모두 빈 것으로 작성한다. 차후에 한 함수씩 코드의 내용을 작성한다.

void push(int data)

int pop()

int peek()

void del()

void printStack()

ex0601.c 추가 및 작성 Source File 선택

ex0601.c 추가 및 작성 Ch06Ex01 프로젝트명 확인 ex0601.c 소스 파일명 설정

추가된 빈 소스 파일 프로젝트에 3 개의 파일 ex0601.c, arraystack.c, arraystack.h 가 추가된 것을 확인할 수 있다.

main 함수 작성 빈 main 함수 작성 표준 입출력 함수 헤더 배열 스택 관련 함수 헤더

main 함수 작성

main 함수 작성

main 함수 작성

빌드 및 실행 결과

도전 문제 스택의 자료를 문자로 저장하도록 하여 사용자가 입력한 문자열을 뒤집어서 출력하는 프로그램을 스택을 이용하여 작성하시오. 배열을 사용한 스택을 작성하되 스택의 크기를 사 용자가 임의로 정하여 할 수 있도록 프로그램을 수 정하시오.

예제 6-2 실습하기 단순연결자료구조를 이용한 스택구현 단순연결자료구조를 이용한 스택을 구현하고 이와 연관된 함수를 구현한다. 단순연결자료구조를 이용한 스택을 구현하고 이와 연관된 함수를 구현한다. 단순연결자료구조를 이용한 스택을 구현한 소스파 일과 헤더파일을 따로 작성한다. 구현한 함수 목록 push : 스택에 자료 추가하기 pop : 스택에서 자료 꺼내오기 peek : 스택의 최상위 자료 읽기 del : 스택의 최상위 자료 삭제 printStack : 스택 출력

소스 목록 및 내용 liststack.h : 스택구현에 필요한 자료형과 함수의 원형을 선언하는 헤더 파일 liststack.c : 스택 구현에 필요한 자료형과 함수의 내용을 작성한 소스 ex0602.c : 스택을 테스트하는 main 소스 파일

실습하는 순서 Eclipse 를 실행한다. Workspace와 Perspective가 맞는지 확인 하고 맞지 않으면 수정한다. Workspace 는 D:\Lec_hwlee\Capp\y2014 이고 Perspective 는 C/C++ 이어야 한다. 프로젝트 생성 liststack.h 파일 작성 liststack.c 파일 작성 ex0602.c 작성 빌드 및 실행 결과 확인

소스들 사이의 연관 관계 liststack.h ex0602.c 연결리스트 구현에 필요한 구조체와 필요한 함수의 원형을 선언한다. ex0602.c 구현된 연결리스트를 테스트 해보는 main 소스 포함한다. 포함한다. 실제 함수를 호출하여 사용한다. liststack.c 연결리스트 구현에 필요한 함수의 내용을 작성한다.

이전 예제와의 차이점 단순 연결자료구조를 사용하므로 빈 스택을 생성 하는 함수가 필요하다. 사용을 종료한 스택이 차지하고 있는 메모리를 반 환하는 함수가 필요하다. push 에서 자료를 저장하기 위한 노드를 위한 메 모리 할당해야 한다. pop과 del 에서 사용한 메모리를 반환해야 한다.

필요한 구조체 자료형

필요한 함수 리턴 타입 함수명 매개변수 기능 Liststack * createStack void 빈 스택을 생성한다. push ListStack * s, int data 새로운 원소를 스택에 추가 한다. int pop ListStack * s 스택의 최상위 자료를 꺼내 온다. del 스택의 최상위 자료를 삭제한다. peek 스택의 최상위 자료를 읽는다. freeStack 스택이 차지하고 있는 메모리를 반환한다. printStack 스택을 출력한다.

함수 가상 코드 createStack() s ← memory allocate for ListStack; if ( s = NULL) then memory full error; return NULL; else { s->top ← NULL; return s; } End createStack

함수 가상 코드 push(ListStack * s, int data) node ← memory allocate for int; if ( node = NULL) then overflow(memory full); else { node.data ← data; node.link ← s->top s->top ← node; } End push

함수 가상 코드 pop(ListStack * s) if( top = NULL) then underflow; else { temp ← s->top; data ← temp.data; s->top ← temp->link; free(temp); return data; } End pop

함수 가상 코드 del(ListStack * s) if( top = NULL) then underflow; else { temp ← s->top; data ← temp.data; s->top ← temp->link; free(temp); } End del

함수 가상 코드 peek(ListStack * s) if( top = 0) then underflow; else { data ← s->top->data; return data; } End pop

함수 가상 코드 freeStack(ListStack * s) if( top = NULL) then return; else { temp ← s->top; while( temp ≠ NULL ) then do { s->top ← s->top->link; free(temp); temp ← s->top; } } End pop

함수 가상 코드 printStack(ListStack * s) write “STACK [“; temp ← s->top; while ( temp ≠ NULL) then do { data ← temp->data; write data +” ”; temp ← temp->link; } write “] \n”; End printStack

main 소스 코드 스택을 만들고 구현한 함수들이 정상 동작하는지 를 테스트하는 코드를 작성한다. 스택에 1,2,3을 추가한 후 peek, del, pop을 사용 하여 다시 제거한다.

main 의 가상 코드 s ← createStack(); write message PrintStack(s); Push(s,1); Push(s, 2); Push(s, 3);

main 의 가상 코드 Peek(s); PrintStack(s); Del(s); Pop(s); Pop(s); freeStack(s);

Eclipse 실행 D:\Lec_hwl\CApp\y2014

Eclipse 실행

Workspace 확인 D:\Lec_hwl\CApp\y2014

CDT Perspective 확인 이 버튼을 클릭해서 수정 Java EE 로 되어 있음

CDT Perspective 확인 C/C++ 선택

CDT Perspective 확인 C/C++ 로 되어 있음

새 프로젝트 생성 File->New->C Project 반드시 C Project를 택할 것

프로젝트 명 설정 Ch06Ex02 Empty Project Cygwin GCC D:\Lec_hwl\capp\y2014\Ch06Ex02

프로젝트 구성 설정 Debug 버전과 Release 버전 모두 사용

생성된 빈 프로젝트

liststack.h 추가 및 작성 Header File 선택

liststack.h 추가 및 작성 liststack.h 헤더 파일 명 설정

liststack.h 추가 및 작성 자동 생성된 빈 헤더 파일 헤더가 여러 소스에서 포함되었을 때 이중으로 포함되지 않도록 하는 매크로 실제 헤더의 내용이 들어갈 위치

liststack.h 추가 및 작성 구조체 및 함수 원형 선언 필요한 함수들의 원형

linkedlist.c 추가 및 작성 Source File 선택

arraystack.c 추가 및 작성 Ch06Ex02 프로젝트명 확인 liststack.c 소스 파일명 설정

liststack.c 추가 및 작성 자동 생성된 빈 소스 파일

liststack.c 추가 및 작성 필요한 코드 작성(빈 함수 작성) 표준 입출력 함수 헤더 메모리할당 함수 헤더 단순연결 구조 스택 해더 필요한 각 함수의 원형에 맞게 함수의 몸체를 작성하되, 내용은 모두 빈 것으로 작성한다. 차후에 한 함수씩 코드의 내용을 작성한다.

ListStack * createStack(void)

void push(ListStack * s, int data)

int pop(ListStack * s)

int peek(ListStack * s)

void del(ListStack * s)

void freeStack(ListStack * s)

void printStack(ListStack * s)

ex0602.c 추가 및 작성 Source File 선택

ex0601.c 추가 및 작성 Ch06Ex02 프로젝트명 확인 ex0602.c 소스 파일명 설정

추가된 빈 소스 파일 프로젝트에 3 개의 파일 ex0602.c, liststack.c, liststack.h 가 추가된 것을 확인할 수 있다.

main 함수 작성 빈 main 함수 작성 표준 입출력 함수 헤더 단순연결자료구조 스택 관련 함수 헤더

main 함수 작성

main 함수 작성

main 함수 작성

빌드 및 실행 결과

도전 문제 스택에 저장하는 자료를 다음 그림과 같은 사용자 정보로 하는 단순 연결 자료구조 스택을 만들고 이 를 이용하여 사용자로부터 5개의 정보를 받아들인 후에 받아들인 역순으로 사용자 정보를 출력하는 프로그램을 작성하시오.