CS
-
[C언어/자료구조] 연결리스트 - 다항식CS/자료구조&알고리즘 2020. 1. 19. 18:21
※ 인프런 무료강좌 C로 배우는 자료구조(권오흠 교수님)를 보고 개인적인 복습을 위해 정리한 내용입니다. 다항식이란 ? 1원다항식(일변수 다항식) : 변수가 하나인 다항식 단항식 : 하나의 항으로 이루어진 식 다항식/n항식 : 여러 개의 항으로 이루어진 식/n개의 항으로 이루어진 다항식 상수항 : 변수를 포함하지 않는 항 계수 : 변수의 거듭제곱에 곱하는 수 ( x2 - 2x + 3의 세 항의 계수는 각각 1, -2, 3 ) 차수 : 변수를 거듭제곱한 지수 ( x2의 차수는 2 ) 동류항 : 차수가 같은 항 ( x2 + 3x - x + 3에서 3x와 -x는 동류항 ) 동류항이 있는 다항식 : 정리되지 않은 다항식으로, 계수를 더해 동류항들을 하나의 항으로 만들어야 한다. ( x2 + 3x - x + 3 ..
-
[C언어/자료구조] 연결리스트(Linked list) 기본 연산 예제 (인프런)CS/자료구조&알고리즘 2020. 1. 17. 20:44
※ 인프런 무료강좌 C로 배우는 자료구조(권오흠 교수님)를 보고 개인적인 복습을 위해 정리한 내용입니다. 연결리스트 만들기 / 출력하기 연결리스트를 사용하기 위해서는 먼저 하나의 node를 담을 구조체를 선언해야한다. struct node { char *data; /*데이터 필드 : 하나의 문자열 저장 */ struct node *next; /*링크 필드 : 다음 노드의 주소 저장 */ } typedef struct node Node; Node *head = NULL; /* 첫 번째 노드의 주소를 저장할 포인터 */ Node라는 이름의 구조체를 선언하고, 첫번째 노드의 주소를 따로 보관할 수 있는 포인터 변수도 선언했다. 이제 세 개의 노드로 구성된 연결리스트를 만들고 출력하는 코드를 작성할 것이다. i..
-
[C언어/자료구조] 연결리스트(Linked list) 개념 (인프런)CS/자료구조&알고리즘 2020. 1. 16. 15:23
※ 인프런 무료강좌 C로 배우는 자료구조(권오흠 교수님)를 보고 개인적인 복습을 위해 정리한 내용입니다. List와 Set List (리스트) 순서 O (1, 2, 3) =/= (3, 2, 1) Set (집합) 순서 X {1, 2, 3} = {3, 2, 1} 리스트 (List) 리스트를 구현하는 대표적인 두 가지 방법은 배열, 연결리스트가 있다. 삽입(insert), 삭제(remove), 검색(search) 등 기본적인 연산이 가능하다. 배열 vs 연결리스트 배열 크기가 고정되어있어 reallocation이 필요하다. 리스트의 중간에 원소를 삽입하거나 삭제할 경우 다수의 데이터를 옮겨야 한다. 랜덤 액세스 가능. 연결리스트 길이 제한 x 다른 데이터의 이동없이 중간에 삽입이나 삭제 가능. 랜덤 액세스 불..
-
[C언어/자료구조] 전화번호부 v5.0 (인프런)CS/자료구조&알고리즘 2020. 1. 14. 07:00
※ 인프런 무료강좌 C로 배우는 자료구조(권오흠 교수님)를 보고 개인적인 복습을 위해 정리한 내용입니다. 전화번호부 v5.0의 개선사항 https://skm1104.tistory.com/29 전화번호부 v1.0 https://skm1104.tistory.com/30 전화번호부 v2.0 https://skm1104.tistory.com/31 전화번호부 v3.0 https://skm1104.tistory.com/32 전화번호부 v4.0 v4.0에서부터 구조체 배열을 만들어 데이터를 담는 데 사용했다. 그런데 C 프로그래밍에서 구조체 배열을 만들어 사용하는 것은 일반적인 경우는 아니다. 구조체의 크기가 클 경우 비효율적일 수 있기 때문이다. C언어에서는 함수를 호출할 때 매개변수의 전달방식이 call-by-v..
-
[C언어/자료구조] 전화번호부 v4.0 (인프런)CS/자료구조&알고리즘 2020. 1. 13. 07:00
※ 인프런 무료강좌 C로 배우는 자료구조(권오흠 교수님)를 보고 개인적인 복습을 위해 정리한 내용입니다. 전화번호부 v4.0의 개선사항 https://skm1104.tistory.com/29 전화번호부 v1.0 https://skm1104.tistory.com/30 전화번호부 v2.0 https://skm1104.tistory.com/31 전화번호부 v3.0 v1.0 ~ v3.0 에서는 이름, 전화번호를 각각 배열에 저장하는 자료구조를 사용했다. v4.0에서는 이름, 전화번호 두 가지 항목 외에 더 많은 항목을 추가할 수 있도록 구조체를 사용한 새로운 버전을 만들 것이다. 새로운 버전에서는 각 사람에 대해서 이름, 전화번호, 이메일 주소, 그룹을 지정할 수 있다. 이름을 제외한 다른 항목들은 비워둘 수도..
-
[C언어/자료구조] 전화번호부 v3.0 (인프런)CS/자료구조&알고리즘 2020. 1. 12. 16:51
※ 인프런 무료강좌 C로 배우는 자료구조(권오흠 교수님)를 보고 개인적인 복습을 위해 정리한 내용입니다. 전화번호부 v3.0의 개선사항 https://skm1104.tistory.com/29 전화번호부 v1.0 https://skm1104.tistory.com/30 전화번호부 v2.0 v1.0과 v2.0에서는 배열의 크기가 고정되어 있었고 사용자가 잘못된 명령어를 입력했을 때 적절히 반응할 수가 없었다. 이러한 상황에도 대처할 수 있도록 개선된 v3.0을 만들어보자. 1) 저장된 사람의 수가 배열의 용량을 초과할 경우 동적 메모리 할당으로 배열의 크기를 키운다. names, numbers를 배열로 선언하지 않고 포인터로 선언해야한다. char ** names; char ** numbers; char * ..
-
C언어 전화번호부 v2.0 (인프런)CS/C언어 2020. 1. 11. 07:00
※ 인프런 무료강좌 C로 배우는 자료구조(권오흠 교수님)를 보고 개인적인 복습을 위해 정리한 내용입니다. v2.0 에서는 전화번호부를 파일로 저장하고 로드하고, 알파벳 순으로 정렬할 것이다. 자료구조는 전화번호부 v1.0과 동일하다. 전화번호부를 파일로 로드하고 저장하기 load 함수 void load() { char fileName[BUFFER_SIZE]; char buf1[BUFFER_SIZE]; char buf2[BUFFER_SIZE]; scanf("%s", fileName); FILE * fp = fopen(fileName, "r"); if (fp == NULL) { printf("Open failed.\n"); return; } while (fscanf(fp, "%s", buf1) != EOF)..
-
C언어 전화번호부 v1.0 (인프런)CS/C언어 2020. 1. 10. 21:01
※ 인프런 무료강좌 C로 배우는 자료구조(권오흠 교수님)를 보고 개인적인 복습을 위해 정리한 내용입니다. 전화번호부 v1.0 이름, 전화번호의 리스트 저장 & 검색 기능 제공하는 전화번호부 프로그램 만들기 add john 01092419488 //새로운 사람 추가 delete john //삭제 find henry //이름으로 전화번호 검색 status //전화번호부에 저장된 모든 사람을 출력 exit //프로그램 종료 프로그램을 만들기 위해서는 가장 먼저 '자료구조'부터 생각해보아야 한다. 자료구조는 프로그램에서 다룰 데이터를 어디에 어떤 구조로 저장할 것인가를 말한다. 동일한 타입의 데이터가 여러 개 있을 때 사용할 수 있는 가장 기본적인 자료구조는 배열이다. v1.0에서는 데이터가 두 가지 종류(이름..