반응형

동적배열 3

자료구조 - 연결리스트[linked list] C언어

연결리스트는 동적배열과 비슷하지만 동적배열에 비해 데이터를 유연하게 삽입, 삭제할 수가 있다. 동적배열의 경우엔 삽입을 하기위해선 배열의 크기를 체크하고 배열의 공간이 꽉 차있다면 realloc을 하였다. 그리고 삽입, 삭제할 지점 이후의 자료들은 메모리의 이동이 이루어지기 때문에, 삽입시 부자연스럽기도 하다. 동적배열과의 연결리스트의 차이점은 배열의 특성은 메모리공간에서 연속이라는 점이다. 그래서 첨자연산으로 빠른 속도가 보장되지만, 메모리가 연속이어야 하기 때문에, 삽입과 삭제가 번거롭다. 하지면 연결리스트는 메모리상에 연속이지 않아도 된다. 다음데이터에 대한 링크정보를 지니고 있기때문에 가능한 일이다. 2014/02/28 - [프로그래밍/C언어] - 동적배열 자료구조의 시작 2014/03/17 - ..

동적배열에서 memmove함수 사용하기 연습 C언어

동적배열은 실행중 배열의 크기를 유연하게 바꿀수 있는 배열이다. 이전에 대략적으로 다뤘지만, 개인적으로 이 동적배열을 잘 다루면 앞으로 나오는 자료구조를 이해하고 적응하는데 많은 도움이 되기 때문에, 몇가지 중요한 포인트를 정리하고자 한다. 아니면 아주 동적배열에서 특정 데이타를 삽입하는 코드를 외우는 것도 괜찮다 생각된다. memmove 함수의 선언을 써보자. void *memmove(void *dest, const void *src, size_t n); // src부터 n만큼을 dest로 이동 memmove함수의 특징은 메모리상에서 dest와 src의 위치가 겹쳐 있어도 데이타의 손실없이 이동이 이루어 진다는데 있다. memcpy와 동작을 비교하기도 하지만 컴파일러에 따라서(gcc,vc)는 memcp..

동적배열 자료구조의 시작

c언어에서 배열은 가장 단순하면서도 직관적인 자료구조다. 배열의 요소가 연속적인 메모리 공간에 붙어 있고 요소의 타입이 동일하기 때문에, 포인터 연산을 통한 데이터로의 접근이 빠르다. 그런데 배열을 사용하면서도 정형적인 형식과, 특징때문에, 유연한 요소의 삽입과 삭제에 제한이 있고, 일단 선언되면 배열의 크기를 가변적으로 바꿀 수 없기 때문에 유연한 사용에 한계가 있다. memmove 함수를 이용해서 메모리의 위치를 이동하여 삽입 삭제가 가능하지만, 이 또한 처음에 정해진 배열의 크기안에서만 가능하다. 이를 해결 하기 위한 것이 동적배열이다. 2014/03/17 - [프로그래밍/C언어] - 동적배열에서 memmove함수 사용하기 연습 C언어 2014/03/20 - [프로그래밍/C언어] - 자료구조 - 연..

반응형