C언어 문서화
-
(C언어)17.그래프(간단), 깊이우선, 너비우선 탐색C언어 문서화 2016. 5. 11. 02:11
주의 : 매우 간단함 그래프의 구조는 크게 두가지로 나뉘어져 있습니다. 꼭짓점, 변. 동그라미들이 꼭짓점, 선들이 변이라고 생각하면 됩니다. 한 꼭짓점에 대해서 연결된 변들의 개수를 차수라고 하며, 예를 들면, 2의 차수는 3, 3의 차수는 2, 6의 차수는 1입니다. 그래프는 무방향 그래프, 방향 그래프로 나뉘어져있으며, 무방향 그래프는 위의 그래프와 같이 변의 순서가 없는 그래프입니다.예를 들면, 4번 꼭짓점과 5번 꼭짓점 사이의 변을 부를때 (4,5)로 읽으나 (5,4)로 읽으나 같다는 소리입니다.방향 그래프는 무방향 그래프와 같이 변의 순서가 있는 그래프입니다. 서로가 서로를 가리키고 있을 때는 둘 사이의 변이 두개이며, 각각 (4,5)와 (5,4)로 읽습니다. 이 두 변은 다른 변입니다. 각각 ..
-
(C언어)16.큐(Queue)C언어 문서화 2016. 5. 8. 21:26
큐는 터널이라고 보면 된다. 아주 좁은 터널.어릴적에 놀이터에서 원통을 눕힌 모양(이하 터널모양)에서 놀아본 기억이 있을것이다.상상해보자.한명이 터널 입구로 들어간다.(여기서 터널은 오로지 한사람만 지나갈 수 있고 터널의 길이는 5명밖에 못들어간다.)그 한명이 터널 출구 바로 전에서 대기한다.또다른 한명이 터널 입구로 들어간다.먼저 들어간 아이 바로 뒤에서 대기한다.이렇게 3번을 더 반복하면 터널이 꽉찬다.여기서 나와! 를 외치면 가장 먼저 터널로 들어간 아이 한명이 나온다.나머지 아이들은 한칸씩 전진한다.이렇게 4번을 더 나와!를 외치면 모두가 나오게 된다. 이걸 메모리를 이용해서 말해보자면:데이터 하나가 큐로 들어간다.(여기서 큐는 일정한 메모리마다 한명씩 들어갈 수 있고, 큐의 길이는 5이다.)그 ..
-
(C언어)15. 스택(stack)C언어 문서화 2016. 5. 8. 19:05
스택은 자료구조 중 하나이다. 특징 : 1. 먼저 들어온 데이터가 더 늦게 나간다.2. 반대로 말하면 늦게 들어올수록 더 빨리 나간다는 것이다.그림 설명 : 공간을 만들었다. 0을 PUSH 했다. 1을 PUSH했다 2를 PUSH했다 POP했더니 2가 나갔다 POP했더니 1이 나갔다 POP했더니 0이 나갔다 구현: 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172#include #include int stack[100];//stack선언, 모두 0으로 초기화int cnt=0;//현재 자료의 개수 void push(i..
-
(C언어)14.링크드리스트(연결리스트)C언어 문서화 2016. 5. 8. 03:37
배열은 메모리에 값을 연속적으로 저장한다. 그래서 중간에 값을 삭제하거나 추가하려면 변할 값을 기준으로 뒤로 쭉 밀거나 앞으로 쭉 당겨야 한다.하지만 링크드리스트를 아는 순간부터 "노드"를 이용해서 값을 추가하거나 삭제하는것을 아주 쉽게 할 수 있을것이다. 링크드리스트는 자료구조의 입문이다. 그렇다. 본격적으로 메모리를 다룬다. 대충 이런식이다. 1. 추가하기 nextadd==NULL){ printf("값이 없는데요? 이게 어터케 된 일이죠? 네?\n"); break; } before=before->nextadd; temp=temp->nextadd; } } } return;} void show(){ int i; if(firstnode==NULL){ printf("값이 없어용\n"); return; } e..
-
(C언어)13.구조체C언어 문서화 2016. 4. 27. 16:11
C언어에는 많은 자료형들이 있다. int라던지 double이라던지... 지금까지 이 자료형들은 묶어서 처리할 수 없었다. 하지만 지금부터는 이야기가 달라진다. 구조체. 영어로 struct 데이터를 묶어주는 역할을 한다.배열과 다른점 : 배열은 같은 자료형의 집합, 구조체는 같거나 다른 자료형의 집합.(구조체 안에도 배열이 들어갈 수 있다.) 그럼 차근차근 절차를 밟아보자. 1. 구조체 정의하기구조체도 나중엔 자료형처럼 사용되기 때문에 꼭 정의해주어야한다.struct [구조체이름]{[자료형] [변수명];...}; 여기서 주의할 점! 구조체를 정의하는것이기 때문에 전역변수처럼 main함수 바깥에 정의해준다. 2. 구조체 선언하기구조체를 정의했으면 선언해서 직접 써야죠! "정의 된 것을 가져와서 쓰겠다!" 라..
-
(C언어) 12. 동적할당C언어 문서화 2016. 4. 6. 03:13
[포인터 - 동적할당] 동적 할당이 필요한 이유1 : 메모리 상에서 너무 많은 값을 낭비할 때동적 할당이 필요한 이유2 : 메모리가 너무 작아서 전체의 값을 담을 수 없을때 행정구역 : data - 초기화된 변수bss - 초기화 안된 전역변수 = 0으로 초기화됨stack - 지역변수, 함수가 호출되고 반환될때heap - 동적할당된 변수txt 동적할당된 변수는 말에 나온 대로 heap애 저장된다. (#include )1. malloc엠얼록, 또는 멀록, 또는 말록, 또는... 읽는 방법은 다양하다. 쓰는 방법 : 동적할당을 하고 싶을 때(그 할당한 값들이 0으로 초기화 안되있어도 상관없을때)type *[포인터변수명]=malloc[type_size]; 이때 malloc은 메모리 할당만 해주는 것이기 때문에 ..
-
(C언어) 11. 문자열(심화)C언어 문서화 2016. 4. 6. 02:56
http://sunrinnote.tistory.com/6 문자열의 기초는 이 위에 설명되어 있다.포인터를 조금 배운 시점에서 조금 설명을 보태자면,만약 포인터 형 변수 ptr이 문자열 arr[]을 가리키고 있다면, 그것은 곧 arr[0]을 가리키고 있다는 것과 같다.1234char arr[]="abcde";int *ptr;//ptr=&arr;//ptr=&arr[0];cs주석처리한 3번, 4번 라인은 같은 말이다. 포인터는 항상 배열의 첫번째 자리를 가리키는데, 문자열도 배열과 같은 개념이므로 포인터의 사용도 동일하다. 이번에는 문자열을 가지고 놀아보자.문자열을 가지고 어떻게 놀아볼까?문자열 길이 재기?문자열 복사하기?문자열 비교하기? 좋다 이정도면 문자열을 가지고 놀아볼 수 있겠다. 1. strlenst..