본문 바로가기

dev, tech224

단순 연결 리스트(Simple Linked List) .가장 단순하면서 가장 많이 쓰이기도 하는 형태 .정보를 저장하는 노드와 바로 다음 노드를 가리키는 링크 하나로 구성 .재배열(rearrangement)이 용이 ---------------------------------------------------------------------------------------- .연결 리스트의 입구 : head - 일반적으로 전역 변수로 선언되어 모듈 내의 어떤 부분에서도 접근 가능하도록 개방되어 있고, 소멸되지 않는다. .연결리스트의 마지막 노드 : tail - 마지막 노드임을 표시 (방법1 : 자기자신을 가리킴 , 방법2 : NULL 값)---------------------------------------------------------------------.. 2006. 4. 7.
연결리스트 연결리스트- 구성 : 노드(node) : 실제의 정보를 담고 있는 하나의 단위 링크(link) : 인접 노드의 위치를 저장하고 있어 연결 리스트의 순서를 유지할 수 있게 하는 연결 고리 - 특징 : 동적인 자료 구조 -1. 필요에 의해 할당/해제하므로 배열처럼 여분의 공간을 마련할 필요가 없다. 그러므로, 메모리를 절약할 수 있는 이점이 있다.2. 메모리의 연속된 공간을 차지하지 않는다. 링크에 의해서 가능 - 형태 : 링크의 개수와 링크의 연결 상태에 따라, 단순 연결 리스트, 환형 연결 리스트, 이중 연결 리스트, 이중 환형 연결 리스트 등이 있다. 2006. 4. 7.
<img src="http://blogimgs.naver.com/nblog/ico_scrap01.gif" class="i_scrap" width="50" height="15" alt="본문스크랩" /> 2차원 배열과 포인터 (3) 10. 2차원 포인터 이것만은 알아두자. 지금까지는 2차원 포인터의 개념에 대해서 설명하였다.지금부터는 2차원 포인터 변수를 이용하여 어떻게 값을 취하는지 중점적으로 살펴보기로 하자. 2차원 포인터에서는 다음의 문장들만 완벽하게 이해한다면 큰 무리 없이 배열 요소의 값을 취할 수 있게 된다. int arr[3][2] = { 3, 5 , 12, 54, 534, 923 };int (*p)[2];p = arr; p -----> 1*p = *(p +0) -----> 2p + i -----> 3* ( p + i ) + j -----> 4* ( * ( p + i ) + j ) -----> 5**p -----> 6 1) p 가장 중요한 것은 5번째 이다. 이것을 이애하기 위해서 다른 것이 필요하다고 해도 과언이 아니.. 2006. 4. 7.
포인터 #7(배열을 함수의 인자로 넘기는 방법) -1차원 배열을 함수의 인자로 넘기기C에서 배열의 크기는 메모리 공간을 할당할 때만 필요하지 실행시에는 배열의 크기에 대해서 컴파일러가 신경써주지 않는다. 그래서, 함수가 배열을 인자로 받을 때 그 배열이 몇 개의 요소를 가지는지는 전혀 알 방법이 없다. 해결 방법으로, 1.배열 자체에 배열의 끝을 나타내는 요소가 있으면배열의 크기를 넘길 필요가 없다. 대표적인 예로, 문자열을 다룰 때 쓰인다. char형의 배열을 구현하는데 특별히 문자열의 크기에 신경을 쓰지 않음을 알고 있을 것이다. 그것은 배열의 끝을 나타내는 0(NULL)이 문자열의 끝에 붙어 있기 때문이다. 배열에 실제 데이터를 저장하기 위해 이용할 수 있는 유연성이 감소된다. 2.함수에게 인수로서 배열의 크기를 전달하는 것이다. 함수는 2개의 .. 2006. 4. 6.