프로그래밍 랩 – 7주 리스트.

Slides:



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

CHAP 1:자료구조와 알고리즘.
CHAP 1:자료구조와 알고리즘 C로 쉽게 풀어쓴 자료구조 생능출판사 2005.
Internet Computing KUT Youn-Hee Han
Chapter 04. 연결 리스트(Linked List) 2
연결리스트(linked list).
Linked List 학기 SANGJI University.
CHAP 6:큐 C로 쉽게 풀어쓴 자료구조 생능출판사 2005.
5장. 리스트 리스트 학습목표 목록이나 도표처럼 여러 데이터를 관리할 수 있는 자료형을 추상화
Internet Computing KUT Youn-Hee Han
쉽게 풀어쓴 C언어 Express 제17장 동적 메모리와 연결 리스트 C Express.
4장 스택.
자료 구조: Chapter 3 (2)구조체, 포인터
Chapter 5. General Linear List
제 4 장 L i s t.
제15장 파일 입출력 문자열을 출력하는 여러가지 방법 (15-2쪽) 문자열만 처리하는 입출력 함수
스택(stack) SANGJI University Kwangman Ko
head data link data link data link NULL a b c
제 3 장 선형 리스트 3.1 선형 리스트 3.2 연결 리스트 3.3 다항식.
CHAP 4:리스트 C로 쉽게 풀어쓴 자료구조 생능출판사 2005.
CHAP 6:큐.
강의 #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 리스트 연산
쉽게 풀어쓴 C언어 Express 제17장 동적메모리와 연결리스트 C Express Slide 1 (of 13)
자료구조: CHAP 6 큐 컴퓨터공학과 하 상 호.
자료구조: CHAP 4 리스트 (2) 순천향대학교 컴퓨터공학과 하 상 호.
쉽게 풀어쓴 C언어 Express 제17장 동적 메모리와 연결 리스트 C Express.
쉽게 풀어쓴 C언어 Express 제17장 동적메모리와 연결리스트 C Express.
동적메모리와 연결리스트 컴퓨터시뮬레이션학과 2016년 봄학기 담당교수 : 이형원 E304호,
P150 문제를 프로그래밍 할 것 Source file (헤더파일포함), 실행화면 (학번_이름_1.txt)
Dynamic Memory and Linked List
CHAP 6:큐.
CHAP 1:자료구조와 알고리즘 C로 쉽게 풀어쓴 자료구조 생능출판사 Slide 1 (of 28)
자료구조: CHAP 4 리스트 (1) 순천향대학교 컴퓨터공학과 하 상 호.
CHAP 4:리스트.
CHAP 6:큐.
스택(Stack) 김진수
자료구조: CHAP 4 리스트 (3) 순천향대학교 컴퓨터공학과 하 상 호.
CHAP 6:큐 C로 쉽게 풀어쓴 자료구조 생능출판사 2005.
11장. 1차원 배열.
CHAP 8:우선순위큐 C로 쉽게 풀어쓴 자료구조 생능출판사 2011.
Introduction To Data Structures Using C
배열과 연결리스트 연결리스트 배열 메모리 할당이 연속적이어서 인덱스 사용시 검색이 빠르다.
컴퓨터의 기초 제 2강 - 변수와 자료형 , 연산자 2006년 3월 27일.
다음 주 과제 3장 읽어오기 숙제 해서 제출하기. 자료구조와 알고리즘, 순환 E304호,
쉽게 풀어쓴 C언어 Express 제14장 포인터 활용 C Express Slide 1 (of 22)
* 프로그램을 간단히 하기 위해 malloc 성공체크는 안 함
Chapter 04 리스트.
Chapter6 : JVM과 메모리 6.1 JVM의 구조와 메모리 모델 6.2 프로그램 실행과 메모리 6.3 객체생성과 메모리
Chap. 1 Data Structure & Algorithms
컴퓨터 프로그래밍 기초 - 10th : 포인터 및 구조체 -
자료구조: CHAP 4 리스트 (2) 순천향대학교 컴퓨터공학과 하 상 호.
선택 정렬 #define SWAP(x, y, t) {(t) = (x); (x) = (y); (y) = (t);}
3장. 변수와 연산자. 3장. 변수와 연산자 3-1 연산자, 덧셈 연산자 연산자란 무엇인가? 연산을 요구할 때 사용되는 기호 ex : +, -, *, / 3-1 연산자, 덧셈 연산자 연산자란 무엇인가? 연산을 요구할 때 사용되는 기호 ex : +, -, *, /
CHAP 8:우선순위큐.
조 병 규 Software Quality Lab. 한 국 교 통 대 학 교
CHAP 1:자료구조와 알고리즘.
데이터 동적 할당 Collection class.
토론을 위한 질문 배열의 이름에는 무엇이 저장되는가? C언어에서 배열 추상데이터의 store는 어떻게 구현 되는가?
제 8장. 클래스의 활용 학기 프로그래밍언어및실습 (C++).
구조체(struct)와 공용체(union)
제 29 강 스트링(string) 다루기 s a i s . s T i h t g r i n.
29장. 템플릿과 STL 01_ 템플릿 02_ STL.
어서와 C언어는 처음이지 제21장.
개정판 누구나 즐기는 C언어 콘서트 제13장 동적 메모리 출처: pixabay.
6 객체.
Presentation transcript:

프로그래밍 랩 – 7주 리스트

Lab 7-1: 리스트 - 배열 배열을 이용한 List 리스트 함수 #define MAX_LIST_SIZE 100 // 배열의 최대크기 typedef int element; typedef struct { int list[MAX_LIST_SIZE]; // 배열 정의 int length; // 현재 배열에 저장된 자료들의 개수 } ArrayListType; 리스트 함수 void init(ArrayListType *L) int is_empty(ArrayListType *L) int is_full(ArrayListType *L) void display(ArrayListType *L) void add(ArrayListType *L, int position, element item) element delete_list(ArrayListType *L, int position) element search(ArrayListType *L, element data) //완성할것

Lab 7-2: 연결 리스트 단순 연결 리스트 사용 #define FALSE 0 #define TRUE 1 typedef int element; typedef struct ListNode { element data; struct ListNode *link; } ListNode; typedef struct { ListNode *head; // 헤드포인터 int length;// 노드의 개수 } ListType; void insert_node(ListNode **phead, ListNode *p, ListNode *new_node) void remove_node(ListNode **phead, ListNode *p, ListNode *removed) void init(ListType *list) ListNode *get_node_at(ListType *list, int pos) int get_length(ListType *list) void add(ListType *list, int position, element data) void add_last(ListType *list, element data) void add_first(ListType *list, element data) int is_empty(ListType *list) void Delete(ListType *list, int pos) element get_entry(ListType *list, int pos) void clear(ListType *list) void display(ListType *list) int is_in_list(ListType *list, element item) ListNode *search(ListType *list, element data, int *pos) 찾으면 ListNode 못 찾으면 NULL return // 구현할것

Lab 7-3: 문자열 데이터 리스트 Node에 문자열을 Data로 보관 함수들 typedef char * element; typedef struct ListNode { element data; struct ListNode *link; } ListNode; typedef struct { ListNode *head; // 헤드 포인터 int length;// 노드의 개수 } ListType; 함수들 void add_tail(ListType *list, element item) node = (ListNode *)malloc(sizeof(ListNode)); node->data = (element)malloc(strlen(item)+1); // 문자열 저장 void display(ListType *list) int get_length(ListType *list) element get_entry(ListType *list, int n) ListNode *search(ListType *list, element item, int *pos) 찾으면 Pointer 를 return 하고 못 찾으면 NULL return

} main() { int i, n; ListType list; ListNode *node; char item[100]; // Lab7-3 문자열을 data로 갖는 리스트 linked list #include <stdio.h> #include <string.h> #include <stdlib.h> #define MAXITEM 100 typedef char * element; typedef struct ListNode { element data; struct ListNode *link; } ListNode; typedef struct { ListNode *head; // 헤드 포인터 int length;// 노드의 개수 } ListType; void add_tail(ListType *list, element item) { } void display(ListType *list) int get_length(ListType *list) element get_entry(ListType *list, int n) // 찾아서 Node를 return, 없으면 NULLt ListNode *search(ListType *list, element item) // 리스트를 초기화한다. void init(ListType *list) if( list == NULL ) return; list->length = 0; list->head = NULL; main() { int i, n; ListType list; ListNode *node; char item[100]; init(&list); add_tail(&list,"마요네즈"); add_tail(&list,"빵"); add_tail(&list,"치즈"); add_tail(&list,"우유"); n = get_length(&list); printf("쇼핑해야할 항목수는 %d입니다.\n", n); display(&list); for(i=0;i<n;i++) printf("%d항목은 %s입니다\n", i,get_entry(&list2,i)); while (1) { int pos; printf("찾을 항목 (종료quit) : "); scanf("%s", data); if (strcmp(data, "quit")==0) break; node = search(&list, data, &pos); if (node!=NULL) printf("[%d:%s]\n", pos, node->data); else printf("Not Found.!\n"); }

Lab 7-4: 이중 연결 리스트 left link 와 right link 사용 typedef int element; typedef struct DlistNode { element data; struct DlistNode *llink; struct DlistNode *rlink; } DlistNode; 함수들 void init(DlistNode *phead) void display(DlistNode *phead) void dinsert_node(DlistNode *before,DlistNode *new_node) void dremove_node(DlistNode *phead_node, DlistNode *removed) DlistNode *search(DlistNode *phead_node, element data, int *pos) 찾으면 DlistNode pointer 못 찾으면 NULL return // 구현할것

Lab 7-ACM: 점수집계(2004)

Lab 7-ACM2: ACM1용 TEST DATA 생성기 만들기 srand(), rand() 사용 (1 ~ 10 5개 생성) Lab7-ACM2 생성, 복사, Lab7-ACM붙여넣기 KIN 확률이 주어진다면?? (예: KIN 30%)  Lab7-ACM과 합성 Mouse 우측, 표시, Enter로 복사, 우측 붙여넣기 <Lab7-acm2> <Lab7-acm>

리스트 ADT 객체: n개의 element형으로 구성된 순서있는 모임 ∙연산: ▪ add_last(list, item) ::= 맨끝에 요소를 추가한다. ▪ add_first(list, item) ::= 맨끝에 요소를 추가한다. ▪ add(list, pos, item) ::= pos 위치에 요소를 추가한다. ▪ delete(list, pos) ::= pos 위치의 요소를 제거한다. ▪ clear(list) ::= 리스트의 모든 요소를 제거한다. ▪ replace(list, pos, item) ::= pos 위치의 요소를 item로 바꾼다. ▪ is_in_list(list, item) ::= item이 리스트안에 있는지를 검사한다. ▪ get_entry(list, pos) ::= pos 위치의 요소를 반환한다. ▪ get_length(list) ::= 리스트의 길이를 구한다. ▪ is_empty(list) ::= 리스트가 비었는지를 검사한다. ▪ is_full(list) ::= 리스트가 꽉찼는지를 검사한다. ▪ display(list) ::= 리스트의 모든 요소를 표시한다.