배열과 연결리스트 연결리스트 배열 메모리 할당이 연속적이어서 인덱스 사용시 검색이 빠르다.

Slides:



Advertisements
Similar presentations
스택 스택 추상자료형 스택 스택의 구현 스택의 응용 한빛미디어(주).
Advertisements

제 3 장 변수와 자료형.
CHAP 1:자료구조와 알고리즘.
8. 파일 인덱스: 탐색트리 (Search Tree)
쉽게 풀어쓴 C언어 Express 제11장 포인터 C Express.
3 장 stack and queue.
CHAP 1:자료구조와 알고리즘 C로 쉽게 풀어쓴 자료구조 생능출판사 2005.
Internet Computing KUT Youn-Hee Han
제 8 장  파서 생성기 YACC 사용하기.
시스템 생명 주기(System Life Cycle)(1/2)
CHAP 6:큐 C로 쉽게 풀어쓴 자료구조 생능출판사 2005.
자료구조 실습 (03분반)
5장. 리스트 리스트 학습목표 목록이나 도표처럼 여러 데이터를 관리할 수 있는 자료형을 추상화
Internet Computing KUT Youn-Hee Han
Internet Computing KUT Youn-Hee Han
C 11장. 포인터의 활용 #include <stdio.h> int main(void) { int num;
쉽게 풀어쓴 C언어 Express 제17장 동적 메모리와 연결 리스트 C Express.
시스템 생명 주기(System Life Cycle)(1/2)
구조체 struct 구조체와 함수 구조체의 배열, sizeof 연산자 열거형 enum 형 정의 typedef
연결리스트 (Linked List) 충북대학교 컴퓨터공학과 서 영 훈.
쉽게 풀어쓴 C언어 Express 제4장 변수와 자료형 C Express.
4장 스택.
제5장 제어명령
7 스택.
제 4 장 L i s t.
스택(stack) SANGJI University Kwangman Ko
head data link data link data link NULL a b c
HW#2 #1과 동일한 방법으로 argc와 argv를 사용함
강의 #6 큐(Queue).
CHAP 6:큐 C로 쉽게 풀어쓴 자료구조 Slide 1 (of 27).
CHAP 6:큐 C로 쉽게 풀어쓴 자료구조 생능출판사 2005.
다음 주 과제 7장 읽어오기 숙제 해서 다음 주(11월 12일) 제출하기. 큐(Queue) E304호,
Chapter 9 – 구조형과 리스트 처리 Outline 9.1 자신 참조 구조형 9.2 선형 연결 리스트 9.3 리스트 연산
10장 메모리 관리.
쉽게 풀어쓴 C언어 Express 제17장 동적 메모리와 연결 리스트 C Express.
쉽게 풀어쓴 C언어 Express 제17장 동적메모리와 연결리스트 C Express.
동적메모리와 연결리스트 컴퓨터시뮬레이션학과 2016년 봄학기 담당교수 : 이형원 E304호,
C 9장. 구조체 #include <stdio.h> int main(void) { int num;
Chapter 05. 클래스 완성. chapter 05. 클래스 완성 01. 복사 생성자 복사 생성(Copy Construction) 생성될 때 자신과 같은 타입의 객체를 변수로 받아, 이 객체와 같은 값을 갖는 새로운 객체를 생성하는 것 명시적인 생성 과정뿐만.
CHAP 1:자료구조와 알고리즘 C로 쉽게 풀어쓴 자료구조 생능출판사 Slide 1 (of 28)
쉽게 풀어쓴 C언어 Express 제10장 배열 C Express.
스택(Stack) 김진수
14주차.
Introduction To Data Structures Using C
8 큐.
컴퓨터의 기초 제 2강 - 변수와 자료형 , 연산자 2006년 3월 27일.
제 6장 함수 Hello!! C 언어 강성호 김학배 최우영.
다음 주 과제 3장 읽어오기 숙제 해서 제출하기. 자료구조와 알고리즘, 순환 E304호,
* 프로그램을 간단히 하기 위해 malloc 성공체크는 안 함
Chapter 04 리스트.
컴퓨터 프로그래밍 기초 - 4th : 수식과 연산자 -
Chap. 1 Data Structure & Algorithms
제어문 & 반복문 C스터디 2주차.
제 1 강.
3장. 변수와 연산자. 3장. 변수와 연산자 3-1 연산자, 덧셈 연산자 연산자란 무엇인가? 연산을 요구할 때 사용되는 기호 ex : +, -, *, / 3-1 연산자, 덧셈 연산자 연산자란 무엇인가? 연산을 요구할 때 사용되는 기호 ex : +, -, *, /
게임프로그래밍 I - 1차원 배열 - 공주대학교 게임디자인학과 박 찬 교수 2011년 4월 25일.
제 8장 구조체 Hello!! C 언어 강성호 김학배 최우영.
Chapter 11. 배열과 포인터.
Lecture 8 복잡한 구조 프로그래밍 프로그램 짤 때의 마음가짐 invariant 데이터 구성 list pair
조 병 규 Software Quality Lab. 한 국 교 통 대 학 교
Lecture 7 복잡한 구조 프로그래밍 프로그램 짤 때의 마음가짐 invariant list set
-Part1- 제7장 반복문이란 무엇인가.
자료구조 (Data Structure).
쉽게 풀어쓴 C언어 Express 제6장 조건문 C Express.
컴퓨터 프로그래밍 기초 - 11th : 파일 입출력 및 구조체 -
실습과제 1번 생성된 파일 basic.txt를 프로젝트 폴더에서 메모장으로 열고 내용을 확인
개정판 누구나 즐기는 C언어 콘서트 제11장 구조체, 공용체, 열거형 출처: pixabay.
List, ArrayList, Vector, LinkedList 가 있습니다
배열, 포인터, 함수 Review & 과제 1, 2.
List, ArrayList, Vector, LinkedList 가 있습니다
Presentation transcript:

배열과 연결리스트 연결리스트 배열 메모리 할당이 연속적이어서 인덱스 사용시 검색이 빠르다. 메모리 관리 면에서 공간의 낭비가 심하다. 자료의 삽입 및 삭제가 어렵다. 연결리스트 메모리 할당이 비연속적이며, 크기가 동적이므로 낭비가 없다. 보통 element 와 element 를 가로 질러서 조건에 맞을 때까지 순차 검색하므로 검색이 느리다. 자료의 삽입및 삭제가 쉽다

레코드 정의 성적관리 레코드 (배열) typedef struct _student { int studentId; char name[30]; int korean; int english; int math; } student; student list[MAX_STUDENT];

레코드 정의 성적관리 레코드 (연결리스트) typedef struct _student { int studentId; char name[30]; int korean; int english; int math; struct _student *next; } student; student *head = null;

레코드 정의 사용 예제 student *newStudent = (student *) malloc (sizeof (student)); newStudent->id = …… /* 데이터 저장 */ if (head != null) { /* 레코드가 존재하는 경우 추가 */ newStudent->next = null; head = newStudent; } else { /* 레코드가 없는 경우 추가 */ }

Factorial 예제 int f, x; int factorial(int a); int main() { puts("Enter an interger value"); scanf("%d", &x ); if(x < 1) return 1; f=factorial(x); printf("%d factorial is %d\n", x, f); return 0; }

Factorial 예제 int factorial(int a) { if(a == 1) return 1; else { a *= factorial(a - 1); return a; /* return value */ }

Stack 예제 #define STACK_SIZE 10 char stackbuf[STACK_SIZE]; int top = -1; int push(char data) { if(top == STACK_SIZE - 1) { printf("stack overflow \n"); return -1; /* nothing */ } else { top++; /* change top */ stackbuf[top] = data; /* insert data */ }

Stack 예제 char pop() { if(top == -1) { printf("stack empty \n"); return -1; /* nothing */ } else { top--; /* change top */ return stackbuf[top + 1]; /* return value */ }

Stack 예제 void printStack() { int i; if(top == -1) { printf("stack empty \n"); return; } for(i=top; i>=0; i--) printf("%c ", stackbuf[i]); printf("\n");

Array Circular Queue 예제 #define Q_SIZE 10 char queuebuf[Q_SIZE]; int front = 0; int rear = 0; int enqueue(char data) { if((rear + 1) % Q_SIZE == front) { printf("queue overflow \n"); return -1; /* nothing */ } else { queuebuf[rear] = data; /* insert data */ rear = (rear + 1) % Q_SIZE; /* change rear */ }

Array Circular Queue 예제 char dequeue() { if(front == rear) { printf("queue empty \n"); return -1; /* nothing */ } else { front = (front+1) % Q_SIZE; /* change front */ return queuebuf[front]; /* return value */ }

Array Circular Queue 예제 void printQueue() { int i, next; if(front == rear) { printf(“queue empty \n"); return; } for(i=front; i!=rear; i=(i+1) % Q_SIZE) printf("%c ", queuebuf[i]); printf("\n");

Linked list Queue 예제 typedef struct _node { char value; struct _node *next; } node; node *front = null; node *rear = null;

Linked list Queue 예제 int enqueue(char data) { node *newNode = (node *)malloc(sizeof(node)); newNode->value = data; newNode->next = null; if(front == null) { front = newNode; rear = newNode; } else { rear->next = newNode; } return 0;

Linked list Queue 예제 char dequeue() { node *old = front; char data; if(front == null) { printf("queue empty \n"); return -1; } else { data = old->value; front = front->next; if(front == null) rear = null; } free(old); return data;

Linked list Queue 예제 void printQueue() { node *p = front; if(p == null) { printf(“queue empty \n"); return; } while(p != null) { printf("%c ", p->value); p = p->next; printf("\n");