연결리스트 개념과 기본동작 리스트 컴퓨터 프로그램은 대부분 리스트 - 기본적인 연산 : 삽입(insert),삭제(remove),검색(search)등 - 리스트를 구현하는 대표적인 두 가지 방법 : 배열, 연결 리스트 배열은 랜덤엑세스가 가능한 자료구조다 랜덤엑세스 ? 배열은 각 칸의 타입이 같고 즉, 크기가 동일하다. 예를 들어 배열의 5번재 칸은 배열의 시작 주소 + 4*(1칸의 크기) n번째 칸에 대한 접근의 차이가 없다. > 랜덤엑세스 몇번째 칸이든 상관 없다. >> 배열의 장점 배열의 단점 - 크기가 고정 - reallocation이 필요 = 리스트의 중간에 원소를 삽입하거나 삭제할 경우 다수의 데이터를 옮겨야 연결리스트 - 다른 데이터의 이동없이 중간에 삽입이나 삭제가 가능하며, - 길이의 제한..
변수를 선언하는 대신 프로그램의 요청으로 메모리를 할당할 수 있다. 이것을 동적 메모리 할당이라고 부릅니다. malloc 함수를 호출하여 동적메모리할당을 요청하면 요구하는 크기의 메모리를 할당하고 그 시작 주소를 반환합니다. malloc함수의 리턴값이 주소값이므로 당연히 포인터 변수를 사용해야 합니다. 동적으로 할당된 배열은 공간이 부족할 경우 더 큰 배열을 할당하여 사용할 수 있습니다. 엄밀히 말하면 배열의 크기를 확장할 수 없습니다. 더큰 배열을 새롭게 만들어서 대체하는 방식으로 접근해야 합니다. 배열의 확장을 코드로 살펴봅시다. #include #include int main(void) { int* array = (int*)malloc(4 * sizeof(int)); array[0] = 1; arr..
C언어를 리뷰하기전 다음 3가지를 알면 c언어를 이해하는데 큰 도움이 됩니다. - 컴퓨터의 메모리는 데이터를 보관하는 장소 - 바이트(8bits)단위로 주소가 지정됨 - 모든 변수는 주소를 가짐 예를들어 정수는 4바이트를 할당되고, 메모리의 4바이트 공간에 sum변수가 할당됩니다. 이때 가장 앞의 번지가 그 변수의 주소가 됩니다. 포인터는 메모리 주소를 값으로 가지는 변수이고, 포인터 변수는 다음과 같이 선언됩니다. type-name * variable-name variable-name은 선언된 포인터 변수의 이름이며, *는 variable-name이 포인터 변수임을 표시하고, type-name은 포인터 변수 variable-name에 저장될 주소에 저장될 데이터의 유형을 지정합니다. ex) int * ..