동적메모리와 연결 리스트 컴퓨터시뮬레이션학과 2016년 봄학기 담당교수 : 이형원 E304호,

Slides:



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

2014 가을학기 계산 입문 연습 #4 지도교수 : 박성우 조교 : 이다훈. Python 을 설치합시다.
Android 프로그램개발 환경. 학습 목표 ■ 교육 목표  JDK 설치  JDK 환경 설정  Eclipse 설치  Android SDK 설치  ADT Plug-in 설치  Android Virtual Device(AVD) 설치  Android 예제 프로그램.
Format String Attack! 포맷 스트링 공격 경일대학교 사이버보안학과 학년 남주호.
UNIX 운영 체제의 설계 - Chapter 4. 파일의 내부 표현
기초C언어 제1주 실습 강의 소개, C언어 개요, Cygwin/Eclipse 사용 컴퓨터시뮬레이션학과 2016년 봄학기
OpenCV 안드로이드 연동 환경설정 OpenCV-Android 를 다운 받습니다.
컴퓨터프로그래밍 1주차실습자료 Visual Studio 2005 사용법 익히기.
Image & Video processing
제14장 동적 메모리.
9장. C 언어의 핵심! 함수. 9장. C 언어의 핵심! 함수 9-1 함수의 정의와 선언 main 함수 다시 보기 : 함수의 기본 형태 { } 그림 9-1.
Chapter 04. 연결 리스트(Linked List) 2
연결리스트(linked list).
Report #2 - Solution 문제 #1: 다음과 같이 프로그램을 작성하라.
컴퓨터 프로그래밍 기초 [Final] 기말고사
자료 구조: Chapter 3 (2)구조체, 포인터
쉽게 풀어쓴 C언어 Express 제17장 동적메모리와 연결리스트 C Express Slide 1 (of 13)
제 3장. C보다 나은 C++ II.
CHAPTER 02 OpenCV 개요 PART 01 영상 처리 개요 및 OpenCV 소개.
C / C++ Programming in multi platform
P150 문제를 프로그래밍 할 것 Source file (헤더파일포함), 실행화면 (학번_이름_1.txt)
Dynamic Memory and Linked List
1. C++ 시작하기.
컴퓨터 프로그래밍 기초 #02 : printf(), scanf()
메시지 큐[5] – test1.c 메시지 제어: msgctl(2) #include <sys/msg.h>
자료구조: CHAP 4 리스트 (1) 순천향대학교 컴퓨터공학과 하 상 호.
자바네트워크 제2주 실습 네트워크기초, 스레드.
자료구조: CHAP 4 리스트 (3) 순천향대학교 컴퓨터공학과 하 상 호.
TCP/IP Socket Programming…
C++프로그래 밍 컴퓨터정보과 / 이기희교수.
13. 연산자 오버로딩.
C 프로그래밍 C언어 (CSE2035) (Chap11. Derived types-enumerated, structure, and union) (1-1) Sungwook Kim Sogang University Seoul, Korea Tel:
Method & library.
사용자 함수 사용하기 함수 함수 정의 프로그램에서 특정한 기능을 수행하도록 만든 하나의 단위 작업
프로그래밍 개요
어서와 C언어는 처음이지 제14장.
이름 : 황 상 두 전화번호 : 이메일 : PinTool 이름 : 황 상 두 전화번호 : 이메일 :
자료구조: CHAP 7 트리 –review 순천향대학교 컴퓨터공학과 하 상 호.
영상처리 실습 인공지능연구실.
Chapter6 : JVM과 메모리 6.1 JVM의 구조와 메모리 모델 6.2 프로그램 실행과 메모리 6.3 객체생성과 메모리
안드로이드 앱 개발과정 Step1. 기초과정 강사 : 정 훈 희.
보고서 (due 5/8) 다음과 같은 방식으로 문제를 해결하시오. 문제 분석 알고리즘 작성 프로그램 작성 테스트 및 검증
Eclipse CDT에서 프로젝트를 Export 하고 Import 하는 방법
C언어 응용 제7주 실습 해보기 제6장.
자바 5.0 프로그래밍.
컴퓨터 프로그래밍 기초 - 8th : 함수와 변수 / 배열 -
문자열 컴퓨터시뮬레이션학과 2015년 봄학기 담당교수 : 이형원 E304호,
컴퓨터 프로그래밍 기초 [01] Visual Studio 설치 및 사용방법
빌드 성공.
컴퓨터 계측 및 실습 디지털 출력 영남대학교 기계공학부.
강의 소개 컴퓨터시뮬레이션학과 2017년 봄학기 담당교수 : 이형원 E304호,
C언어 응용 제1주 실습 해보기.
객체기반 SW설계 팀활동지 4.
함수(Function) ◈ 함수의 개념 및 사용 이유 ◈ 함수 정의, 호출 및 선언 ◈ 지역변수와 전역변수 ◈ return 문
OpenCV 설정 2.21 만든이 딩딩.
DK-128 개발환경 설정 아이티즌 기술연구소
문자열 컴퓨터시뮬레이션학과 2016년 봄학기 담당교수 : 이형원 E304호,
기초 C언어 제14주 실습 전처리 및 비트필드, 스트림과 파일 입출력, 동적메모리와 연결 리스트
Homework #12 (1/2) 프로그램을 작성하고, 프로그램과 실행 결과를 프린트하여 제출한다.
Flow Diagram IV While.
기초C언어 제2주 실습 프로그래밍의 개념, 프로그램 작성 과정 컴퓨터시뮬레이션학과 2016년 봄학기 담당교수 : 이형원
슬라이드 쇼의 설정 슬라이드 쇼의 실행 파일과 폴더의 관리 글꼴을 포함해서 저장 웹 페이지로 게시 압축 파일
실습과제 (변수와 자료형, ) 1. 다음 작업 (가), (나), (다)를 수행하는 프로그램 작성
프로그래밍 개론 Ⅰ-실습 2장 데이터와 식①.
29장. 템플릿과 STL 01_ 템플릿 02_ STL.
개정판 누구나 즐기는 C언어 콘서트 제13장 동적 메모리 출처: pixabay.
7 생성자 함수.
BoardGame 보드게임 따라가기.
20 XMLHttpRequest.
제 10 강 문자 입출력.
Presentation transcript:

동적메모리와 연결 리스트 컴퓨터시뮬레이션학과 2016년 봄학기 담당교수 : 이형원 E304호, hwlee@inje.ac.kr

사용자로부터 양의 정수를 받아들여서 연결리스트에 저장하고 출력하는 프로그램을 작성하시오. 사용자가 -1을 입력할 때 까지 받아들이도록 하시오. 연결 리스트의 노드 구조체를 작성하여 사용하시오. 연결리스트 관련 함수를 작성하는 소스와 main 소스를 분리하여 다른 파일에 작성 하시오. 프로그램이 종료하기 전에 링크드리스트의 내용을 메모리에서 삭제 하도록 하시오. 다음과 같이 출력하도록 하시오.

알고리즘 : main 다음을 무한히 반복한다. 현재까지 받아들인 연결리스트를 출력한다. 양의 정수를 입력하라는 메시지를 출력한다. 표준 출력 버퍼를 비운다. 정수를 받아들인다. 정수가 -1이면 반복을 종료한다. 정수를 연결 리스트에 추가 한다.(add_data) 현재까지 받아들인 연결리스트를 출력한다.

필요한 변수 : main 양의 정수를 저장하는 링크드 리스트의 노드 구조체 변수 INTEGER_NODE 연결리스트의 헤드 노드(head) 받아들인 정수를 저장할 변수(data) 양의 정수를 저장하는 링크드 리스트의 노드 구조체 변수 INTEGER_NODE

링크드리스트 관리에 필요한 함수들 add 동작 후 새로운 노드를 추가 하는 함수 : add_data() 현재의 리스트 내용을 출력하는 함수 : print_list() 현재 링크드릿트의 메모리를 해제하는 함수 : free_list() add 동작 후

매개변수 및 리턴 값 : add_data 매개변수 리턴 값 헤드 노드 포인터(head) 추가할 자료(d) 함수의 종료 상태 값(0:정상 종료, -1: 오류)

알고리즘 : add_data node 를 head로 설정한다. Node의 next가 NULL 이 아니면 다음을 반복한다. node를 node의 next로 설정한다. 새 노드를 위한 메모리를 할당 받는다. 새 노드의 data에 d를 대입한다. 새 노드의 next를 NULL로 설정한다. node의 next 를 새 노드로 설정한다.

매개변수 및 리턴 값 : print_list 매개변수 헤드 노드 포인터(head) 리턴 값 없음(void)

알고리즘 : print_list node를 head로 설정한다. Node가 NULL이 아니면 다음을 반복한다. 노드의 data를 출력한다. node의 next가 NULL이 아니면 -> 를 출력한다. node를 node의 next로 설정한다.

매개변수 및 리턴 값 : free_list 매개변수 헤드 노드 포인터(head) 리턴 값 없음(void)

알고리즘 : free_list node를 head로 설정한다. node가 NULL이 아니면 다음을 반복한다. temp에 node를 할당한다. node를 node의 next로 설정한다. temp를 메모리 해제한다.

프로젝트 생성 프로젝트명 입력 : linked Empty Project 선택 Cygwin GCC 콤파일러 선택 생성된 빈 프로젝트

소스 작성(1) main 함수 소스파일명 입력 : main.c linked main.c

소스 작성(2) main 함수 소스수정 생성된 빈 소스 파일 실행프로그램이 되기 위한 최소 내용이 추가된 소스 파일 main.c main.c main.c 소스수정 생성된 빈 소스 파일 실행프로그램이 되기 위한 최소 내용이 추가된 소스 파일

소스작성(3) main 함수 링크드리스트 관련 함수에 관한 헤더 파일 헤드노드 포인터를 저장하는 변수 입력한 정수를 저장하는 변수 다음을 무한히 반복한다. 양수를 입력하라는 메시지를 출력하고 정수를 받아들인다. 입력한 정수가 -1이면 반복을 종료 한다. 헤드가 널이면 새로 할당하고 자료를 저장하고 next를 널로 설정한다. 아니면 헤드노드에 자료를 추가한다.

소스작성(4) : 링크드리스트 관련 함수 헤더 및 소스 추가 linked.h linked.c 헤더파일명 입력 : linked.h 소스파일명 입력 : linked.c

소스작성(5) : linked.h Eclipse 가 자동으로 추가해준 헤더 이중 포함 방지 매크로 링크드리스트의 노드를 나타내는 구조체 타입 INTEGER_NODE 선언 링크드리스트에 관련한 함수의 원형 선언

소스작성(6): linked.c 프로그램에 필요한 헤더를 포함한다.

소스작성(7): linked.c add_data() 함수 현재 노드와 새노드를 저장할 포인터 node를 head로 설정한다. node의 next가 널이 아니면 node 를 node의 next로 설정한다. 새노드를 위한 메모리를 할당하고 새노드의 data를 d로 설정하고 next를 널로 설정한다. node의 next를 새노드로 설정하여 노드를 연결한다.

소스작성(8): linked.c print_list() 현재 노드를 저장할 포인터 변수 node를 head로 설정한다. 화면에 메시지를 출력한다. Node가 널이 아니면 node의 data를 출력한다. Node의 next가 널이 아니면 ->를 출력한다.

소스작성(9): linked.c free_list() 현재 노드를 저장할 포인터 변수 node를 head로 설정한다. 현재 노드 포인터를 임시로 저장한다. node를 다음 노드로 설정하고 임시노드를 작제한다.

소스작성(10) 전체 소스 : main.c

소스작성(11) 전체 소스 : linked.h

소스작성(12) 전체 소스 : linked.c

실행 하기 소스 저장 linked 프로젝트 빌드 프로그램 실행

실행 예

스크린샷 예제 724쪽 6번 725쪽 7번