분류 전체보기 (894) 썸네일형 리스트형 [혼공]3-1 select문 기본(1) 1. 인터넷 마켓 DB 살펴 보기 1) 데이터베이스 만들기 DROP DATABASE IF EXISTS market_db; -- market_db를 삭제 CREATE DATABASE market_db; -- 데이터 베이스를 새로 만듬 2) 회원 테이블 만들기 USE market_db; CREATE TABLE member -- 회원 테이블 (member) ( mem_id CHAR(8) NOT NULL PRIMARY KEY, -- 회원 아이디(PK) mem_name VARCHAR(10) NOT NULL, -- 이름 mem_number INT NOT NULL, -- 인원수 addr CHAR(2) NOT NULL, -- 주소(2글자만 입력) phone1 CHAR(3), -- 연락처의 국번 phone2 CHAR(8.. 9-1장 트리 1. 트리 정의하기 트리(Tree) - 데이터 사이의 계층 관계를 나타내는 자료구조 루트(root) - 트리의 가장 윗부분에 위치하는 노드 - 하나의 트리에는 하나의 루트가 있음 리프(leaf) - 트리의 가장 아랫부분의 위치하는 노드 - 더이상 뻗어나갈 수 없는 마지막에 위치한 노드 안쪽 노드 - 루트를 포함하여 리프를 제외한 노드 자식(child) - 어떤 노드로부터 가지로 연결된 아래쪽 노드 부모(parent) - 어떤 노드에서 가지로 연결된 위쪽 노드 형제(sibling) - 같은 부모를 가지는 노드 조상(ancestor) - 어떤 노드에서 가지로 연결된 위쪽 노드 all 자손(descendant) - 어떤 노드에서 가지로 연결된 아래쪽 노드 all 레벨(level) - 루트로부터 얼마나 떨어져 .. 8-4장 원형 이중 연결 리스트 1. 원형 리스트 알아보기 원형 리스트 (circular list) - 선형 리스트의 꼬리 노드가 머리 노드를 가리킴 - 꼬리 노드의 다음 노드를 가리키는 포인터가 머리 노드의 포인터 값 - 빈 원형 리스트 //원형 리스트가 비어 있는지 확인 list->head == NULL; - 노드가 1개인 원형 리스트 //노드가 1개 인지 확인 list->head->next == list->head - 포인터가 머리 노드를 가리킴 //p가 가리키는 노드가 머리 노드인지 확인 p == list->head - 포인터가 꼬리 노드를 가리킴 //p가 가리키는 노드가 꼬리 노드인지 p->next == list->head 2. 이중 연결 리스트 알아보기 이중 연결 리스트 (doubly linked list) - 양방향 리스트.. 8-3장 커서를 이용한 연결 리스트 1. 커서로 연결 리스트 만들기 - 각 노드를 배열 안의 요소에 저장하고 그 요소를 잘 이용해 연결 리스트를 구현 - 실행 중에 데이터의 개수가 크게 바뀌지 않고 데이터 개수의 최댓값을 미리 알 수 있다면 배열을 사용해 효율적으로 연결리스트 구현 - 배열의 커서에 해당하는 값 = 다음 노드가 들어 있는 요소의 인덱스에 대한 값 - 커서(cursor) : 포인터 역할을 하는 인덱스 -> 노드 B의 커서 3은 B의 다음 노드 C가 인덱스 3인 위치에 저장되어 있음을 의미 -> 꼬리 노드의 커서는 -1 -> 노드의 삽입, 삭제 시 요소를 옮길 필요 없음 ex) 머리에 노드 G 삽입 - head를 1에서 6으로 업데이트 하고 노드 G의 커서에 1을 대입 2. 배열에 비어 있는 요소 처리하기 1) - 연결 리스트.. 8-2장 포인터를 이용한 연결 리스트(2) 1. 머리에 노드를 삽입하는 InsertFront 함수 - 연결 리스트의 머리에 노드를 삽입하는 함수 //머리에 노드를 삽입 void InsertFront(List *list, const Member *x) { Node *ptr = list->head; list->head = list->crnt = AllocNode(); SetNode(list->head,x,ptr); } 1) - 삽입 전의 머리 노드 A에 대한 머리 포인터를 ptr에 대입 Node *ptr = list->head; 2) - 삽입할 노드 G를 AllocNode 함수로 만들고 만든 노드를 가리키도록 머리 포인터 list->head를 업데이트 list->head = list->crnt = AllocNode(); 3) - SetNode 함수를.. 8-2장 포인터를 이용한 연결 리스트(1) 1. 포인터로 연결 리스트 만들기 - 노드용 구조체 Node - data : 데이터 (Member형) - next : 다음 노드에 대한 포인터 (자기 자신과 같은 구조체형을 가리키는 포인터) - 자기 참조형 (self-refernetial) - 자기 자신과 같은 자료형의 객체를 가리키는 데이터가 내부에 포함 //포인터로 만든 연결리스트 #ifndef ___LinkedList #define ___LinkedList //노드 typedef struct __node { Member data; //데이터 struct __node *next; //뒤쪽 포인터(다음 노드에 대한 포인터) }Node; //연결 리스트 typedef struct { Node *head; //머리 노드에 대한 포인터 Node *crnt;.. 8-1장 선형 리스트 1. 선형 리스트 정의하기 선형 리스트 (linear list) - 리스트 : 데이터를 순서대로 나열한 자료구조 - 가장 단순한 구조를 가진 리스트 - 노드(node) : 리스트의 각 요소 - 각각의 노드는 데이터와 다음 노드를 가리키는 포인터를 가짐 - 머리 노드(head node) : 처음에 있는 노드 - 꼬리 노드 (tail node) : 끝에 있는 노드 2. 배열로 선형 리스트 만들기 1) 다음 노드 꺼내기 - 1만큼 큰 인덱스를 갖는 요소에 접근 2) 노드의 삽입과 삭제 -삽입 요소의 다음 요소를 하나씩 뒤로 옮겨야 함 - 삭제하는 경우에도 모든 요소를 뒤로 밀거나 앞으로 당겨야 함 - 배열로 구현한 선형리스트의 문제점 쌓이는 데이터의 크기를 미리 알아야함 데이터의 삽입, 삭제에 따라 데이터를 .. 7-4장 보이어-무어법 1. 보이어-무어법 살펴보기 - 패턴의 마지막 문자부터 앞쪽으로 검사를 진행하면서 일치하지 않는 문자가 있으면 미리 준비한 표에 따라 패턴을 옮길 크기를 결정 - Good Suffix method : 접미사와 같은 문자열이 패턴 문자열 내에 존재하는지 검사 -Bad Character method : 본문의 문자열과 패턴이 불일치하는 문자 (나쁜 문자)를 발견하면 패턴의 나쁜 문자와 텍스트의 나쁜 문자를 일치 시킴 ex) 텍스트 "ABCXDEZCABACABAC"에서 패턴 "ABAC"를 검색하는 경우 - 1) 텍스트와 패턴의 첫 번째 문자를 위, 아래로 겹치고 패턴의 마지막 문자 'C'를 검사 - 텍스트의 'X'는 패턴에 없음 - 텍스트 안에서 패턴에 들어 있지 않은 문자를 찾으면 해당 위치까지의 문자는 건.. 이전 1 ··· 82 83 84 85 86 87 88 ··· 112 다음