- Today
- Total
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- 코딩문제
- 자료구조 강의
- 파이썬 알고리즘
- 알고리즘
- selenium
- 파이썬
- 알고리즘 강의
- 셀레니움
- 쉬운 파이썬
- 파이썬 자료구조
- 자료구조
- python 중간고사
- 파이썬활용
- 대학시험
- 파이썬 강의
- c언어
- 면접 파이썬
- 코딩시험
- python data structure
- 기말시험
- 프로그래밍
- 파이썬3
- 채용문제
- gdrive
- 크롤링
- 파이썬 입문
- 알고리즘 강좌
- 파이썬 강좌
- 중간시험
- Crawling
목록2017/C 프로그래밍 (9)
반원 블로그
▶1. 구조체? 프로그래밍에는 int, char와 같은 기본자료형이 있다. 좀더 큰 범주로 보면 자료형에 속하며 자료형에는 앞서 말한 기본자료형, 유도 자료형이 있다. 우리가 흔히 쓰는 배열, 포인터도 유도 자료형에 속한다. 다음 그림을 보자 유도 자료형은 기본 자료형을 응용해서 좀 더 복잡한 자료를 구현하기위해 지원된다. 같은 자료형을 계속 연결되있는 형태인 배열을 생각하면 편할 것이고, 포인터는 동적배열이 가능한 것을 생각하면 이해하는데 도움이 될 것같다. 이러한 유도 자료형중 오늘은 구조체에 대해 알아보자. ▶2. 여러 데이터 타입을 하나로 묶을 수 있는 구조체 struct 구조체를 이용하면, 여러 종류의 변수를 하나로 묶어서 사용할 수 있다. 신체검사지를 무슨 네용이 적혀있을지 생각해보자. 이름,..
▶1 계획단계 : 연결리스트를 구현해보자. 먼저 노드 구현부터 계획하자. – 노드의 구현은 자기 참조 구조체 이용 – Node 라는 구조체를 정의하고, 그 안에 데이터와 구조체 Node의 주소를 저장할 수 있는 변수 선언 - 각 노드는 정수 하나를 입력 받아 저장하도록 한다.struct Node { int n; struct Node* next; }; ▶2 정의한 구조체 Node의 포인터 변수이자 연결 리스트의 시작과 끝을 의미하는 head, last를 만들자. struct Node *head; struct Node *Last; ▶3 기능을 구현할 함수를 미리 계획해보자. //메인 메뉴를 보여주는 함수 void showMenu(); //만들어진 연결 리스트를 순환하며 출력하는 함수 void printNod..
▶1. 연결리스트 이번 포스팅에서는 동적배열처럼 동적메모리에서 자주 사용되는 연결리스트를 알아보자. 연결리스트란 - 구조체와 포인터를 이용해 유동적으로 데이터를 저장할 수 있는 자료구조 - 배열과 다르게 필요할 때 마다 데이터를 추가할 수 있는 매우 유용한 구조 - 배열과 다르게 필요할 때마다 데이터를 추가할 수 있는 구조 동적 배열의 성질을 생각해보자. 보통 기본자료형을 처음부터 정하고, 인덱스를 통해 접근한다. 역으로 생각해서 배열이 인덱스로 접근할 수 있는 이유는 자료형을 알고있기에 첫 위치만 알면 N번째 데이터를 읽어올 수 있기 때문이다. 그렇다면 인덱스를 사용할 수 없는 경우는 무엇일까? 간단하게 3가지로 나눌 수 있을 것이다. 1. 자료형의 크기를 모르는 경우 2. 각 데이터가 중간중간 떨어져..
이전 포스팅 : http://gosmcom.tistory.com/11 #1 sizeof연산자를 통한 동적 메모리 할당! sizeof에 A를 넘겨주면 A의 크기를 반환해준다.sizeof(자료형이름) => 자료형의 크기 sizeof(변수이름) => 변수의 자료형의 크기 즉 int a 의 크기는 sizeof(int) 또는 sizeof(a)가 가능하다. 보통 전자를 많이 사용한다. 후자는 연결리스트에 필요한 동적할당에서 구조체의 크기를 구할 때의 sizeof를 빗대어 생각해보자.http://gosmcom.tistory.com/10 #2 왜 굳이 sizeof를 써서 동적 할당을 해야되는가? 이전 포스팅에서 '컴파일러에 따라 자료형 bit가 다르다'는 것을 사례로 들었다. 이번에는 실제 코드를 비교해 살펴보도록 하..
#1 동적 배열의 유리성 일반적인 배열로 정수 10개를 입력 받는 프로그램을 작성하고 있다고 생각해보자.#include void main() { int array[10]; } 이 경우의 한계점은 무엇일까?첫째. 값을 최대로 10개까지밖에 못받는다. 값 20개를 받아야 하는 프로그램으로 고쳐야 한다면 작동의 거의 비슷하지만 코딩 및 컴파일을 다시 해 새로운 프로그램을 생성해야한다. 프로그램이 실행하는 도중에는 최대 10개라는 조건을 변경할 수 없다. 둘째, 값을 1개만 입력할 시 9개의 공간이 놀게된다. 메모리 낭비다. 셋째, 프로그램을 작성할 때 미리 배열의 크기를 예상해야한다. 그러다보니 큰 값을 넣을 수 밖에 없고 메모리 공간 낭비가 더 커진다. 정적 배열의 한계를 해결하기위해 동적 배열을 공부해보도..
#1 ■연결 리스트를 파일에 저장하고 불러오기 연결리스트는 C언어의 기본자료형이 아닌 '사용자 정의 자료형'이기에 파일을 바이너리 쓰기 모드로 오픈하고 읽고 써야한다. 연습 1-1 : 구조체 Node 정의, 함수 saveList 구현 -데이터를 담을 구조체와 리스트의 데이터를 파일에 저장할 함수 구현#include #incldue //연결 리스트의 노드로 사용될 Node 구조체를 정의 struct Node{ int val1; float val2; struct Node* next; }; //saveList 함수 구현 - 연결 리스트를 파일에 저장하는 기능 void saveList(FILE* fp, struct Node *p){ while(p != NULL){ //노드가 없을 때까지 반복 //전달된 연결 리..