CS/자료구조(46)
-
[자료구조 - C언어] 자료구조 [1강-10강] 복습 및 정리
//공부 기록용 포스팅입니다. 틀린 부분이 있을 경우 댓글로 알려주시면 감사합니다! 😎 자료구조 1강 메모리 모든 변수는 주소를 가진다. 포인터 포인터는 메모리 주소를 값으로 가지는 변수이다. type-name * variable-name; variable-name은 선언된 포인터 변수의 이름 *는 포인터 변수임을 표시하는 기호 type-name은 * variable-name이 저장하는 메모리 주소에 저장된 값의 데이터 타입 & 연산자: 엠퍼센트 연산자 &(엠퍼센트)는 변수로부터 그 변수의 주소를 추출하는 연산자 int a = 100; int *ptr = &a; //ptr = 변수 a의 주소 값 ptr은 주소값을 저장 → *ptr은 ptr(주소값) 가리키는 값 ptr은 a의 주소 값을 저장 → *ptr은..
2022.08.17 -
[자료구조 - C언어] 자료구조 제10강: 전화번호부 v5.0
//공부 기록용 포스팅입니다. 틀린 부분이 있을 경우 댓글로 알려주시면 감사합니다! 😎 구조체에 대한 포인터, 동적 메모리 할당 구조체의 배열 → 구조체 포인터의 배열 1. C언어에서의 매개 변수 전달 방식 typedef struct person{ char * name, number, email, group; } Person; //Person 타입의 디렉토리 배열 선언 Person directory[CAPACITY]; C언어에서 구조체의 배열은 일반적인 방법이 아니다. void status(){ int i; for(i=0;i=0 && strcmp(directory[i].name, name)>0){ //구조체 이기 때문에 name, number 배열을 따로 이동할 필요 없이 한 번에 이동 directory..
2022.08.09 -
[자료구조 - C언어] 자료구조 제9강: 전화번호부 v4.0
//공부 기록용 포스팅입니다. 틀린 부분이 있을 경우 댓글로 알려주시면 감사합니다! 😎 더 많은 항목, 구조체 업데이트되는 점 각 사람에 대해 이름, 전화번호, 이메일, 그룹을 지정할 수 있다. 이름을 제외한 항목은 비워둘 수 있다. 이름이 여러 단어일 수 있다. 단어 사이에 여러 개의 공백은 한 칸의 공백으로 저장된다. → 한 단어씩 읽기가 어렵다 1. 구조체 항상 같이 붙어다녀야 하는 데이터를 별개의 변수들에 분산해서 저장하는 것은 바람직하지 않다. names, numbers, emails, goups로 서로 다른 4개의 배열에 분산해서 저장하는 것 X 구조체(structure): 항상 같이 붙어 다녀야 하는 데이터들을 하나의 그룹으로 묶어주는 역할 typedef struct person{ char ..
2022.06.02 -
[자료구조 - C언어] 자료구조 제8강: 전화번호부 v3.0
//공부 기록용 포스팅입니다. 틀린 부분이 있을 경우 댓글로 알려주시면 감사합니다! 😎 배열 재할당, 라인 단위 입력과 문자열 tokeninzing #include #include #include #define INIT_CAPACITY 3 #define BUFFER_SIZE 50 void init_directory(); void process_command(); int read_line(char str[], int limit); char ** names; char ** numbers; int capacity = INIT_CAPACITY; int n = 0; char delim[] = " "; int main(){ init_directory(); //배열 names, numbers를 동적 메모리 할당으로 ..
2022.05.24 -
[자료구조 - C언어] 자료구조 제5강: 전화번호부 v2.0
//공부 기록용 포스팅입니다. 틀린 부분이 있을 경우 댓글로 알려주시면 감사합니다! 😎 파일로 저장하고 로드하기, 알파벳 순으로 정렬 https://ksk9820.tistory.com/138 코드 참고 void load(); void save(); int search(); if (strcmp(command, "read") == 0) load(); else if (strcmp(command, "save") == 0) save(); 1. load() void load(){ char fileName[BUFFER_SIZE]; char buf1[BUFFER_SIZE]; char buf2[BUFFER_SIZE]; scanf("%s", fileName); // 파일의 이름을 입력받음 FILE *fp = fopen(f..
2022.05.06 -
[자료구조 - C언어] 자료구조 제4강: 전화번호부 v1.0
//공부 기록용 포스팅입니다. 틀린 부분이 있을 경우 댓글로 알려주시면 감사합니다! 😎 1. 자료구조 프로그램에서 사용되는 data들을 어디에 어떤 구조로 저장할 것인지 어떤 자료구조가 필요한지? 어떤 data를 다루는지에 따라 복습) 배열을 사용하는데 필요한 3가지 요소 배열의 이름 배열의 크기 배열의 타입: 각 칸에 저장되는 데이터의 타입 전화번호부의 이름: names의 문자열의 각 칸은 John과 같은 이름의 주소를 가리키고 있다. char * names[100]; 전화번호부의 번호: numbers의 문자열의 각 칸은 01012345678과 같은 문자열의 주소를 가리키고 있다. char * numbers[100]; 2. 전화번호부 v1.0 #include #include #define CAPACIT..
2022.04.28 -
[자료구조 - C언어] 자료구조 제3강: 문자열 예제
//공부 기록용 포스팅입니다. 틀린 부분이 있을 경우 댓글로 알려주시면 감사합니다! 😎 1. 문자를 입력받고 출력하기 + 문자 길이 #include #include #define BUFFER_SIZE 20 int main(void){ char buffer[BUFFER_SIZE]; while(1){ printf("$ "); //scanf("%s", buffer); //scanf %s는 공백 단위로 단어 하나씩만 입력받음 //gets(buffer); //gets는 줄바꿈 문자가 나올 때 까지 통째로 읽음 fgets(buffer, BUFFER_SIZE, stdin); printf("%s:%d\\n", buffer, strlen(buffer )); } } scanf %s는 공백 단위로 단어 하나씩만 입력받기 때..
2022.04.26 -
[자료구조 - C언어] 자료구조 제2강: 문자열
//공부 기록용 포스팅입니다. 틀린 부분이 있을 경우 댓글로 알려주시면 감사합니다! 😎 1. 문자열 문자열은 char 타입의 배열이 각 칸마다 문자 하나씩 저장되는 것 대부분의 라이브러리 함수들이 문자열을 다루는 경우 문자열의 끝에 null character가 저장되어 있다는 가정하에 동작한다. → null character(’\0’)는 문자열의 끝을 표시하는 역할 어디까지가 문자열이고 어디서부터가 무의미한 데이터인지 구분할 수 있는 방법이 없다. printf 함수 조차도 문자열 끝에 null이 없다면 동작하지 않음 문자열을 생성하는 방법 str[0] = ‘h’; 배열 각 칸에 char 저장하기 char str[] = “hello”; 컴파일러가 자동으로 문자열의 문자 개수를 카운트해서 크기가 6인 배열을..
2022.04.25 -
[자료구조 - C언어] 자료구조 제1강: 동적메모리할당
//공부 기록용 포스팅입니다. 틀린 부분이 있을 경우 댓글로 알려주시면 감사합니다! 😎 1. 동적 메모리 할당 일반적으로 데이터를 저장할 메모리 공간을 확보하는 방법 데이터를 저장할 변수를 선언하고 그 변수에 저장 그렇다면! 동적메모리할당(dynamic memeory allocation)은? 직접적으로 메모리를 요청해서 할당받아 데이터를 저장해 두는 것 어떻게 직접적으로 메모리를 요청할 수 있어? malloc 함수를 사용해서!: memory allocation malloc 함수를 호출 → 동적 메모리 할당을 요청 → 요구하는 크기의 메모리를 할당 → malloc 함수가 메모리의 시작주소를 반환 2. malloc 함수 malloc 함수를 사용하기 위해서는 → #include 헤더 필요 변수를 선언하지 않고..
2022.04.18 -
[자료구조 - C언어] 자료구조 제1강: C언어에서 포인터, 배열, 포인터 연산
//공부 기록용 포스팅입니다. 틀린 부분이 있을 경우 댓글로 알려주시면 감사합니다! 😎 1. 메모리 컴퓨터의 메모리는 데이터를 보관하는 장소 컴퓨터의 메모리 하나의 커다란 테이블, 테이블의 각 칸이 주소를 가진다. 바이트(8 bits) 단위로 주소가 저장됨 정수형 변수는 4byte를 차지한다. 모든 변수는 주소를 가진다. 변수: 메모리의 일정 영역을 차지하면서 어떤 값을 저장할 수 있는 장소 정수형 변수 a는 1002번지부터 1005번지 차지: 변수 a의 주소는 1002번지 2. 포인터(pointer) 포인터는 메모리 주소를 값으로 가지는 변수이다. 포인터는 일종의 변수다. 모든 변수는 주소를 가진다. 정수형 변수는 정수를 값으로 가지는 변수 실수형 변수는 실수를 값으로 가지는 변수 포인터는 메모리 주소..
2022.04.17