순서리스트4 순서리스트의 연결표현(2) (2) current 변수가 NULL인 경우 이 경우는 추가원소의 직전노드가 없는 경우로, 추가노드는 연결리스트의 첫 번째 노드로 추가된다. 추가원소가 연결리스트의 첫 번째 노드가 된다면, 연결리스트의 첫 번째 노드를 나타내는 노드포인터(예를 들면, first)를 변경해야 하는데, 이것은 current 노드의 직후노드로 추가할 때 추가노드를 current 노드의 링크에 연결하는 대신 첫 번째 노드포인터 변수 first에 연결하는것과 같게 된다. 추가원소 x를 연결리스트의 첫 번째 노드로 추가할 때는 추가원소를 위한 노드를 생성한 후(temp 노드), 순차적으로 first 노드(노드포인터 first가 나타내는 노드)를 temp 노드의 링크에 연결하고, 노드포인터 first가 temp 노드를 나타내도록 하면.. 2024. 3. 16. 순서리스트의 연결표현(1) 연결리스트에서는 첫 번째 노드를 제외한 모든 노드들은 항상 그 직전노드의 링크를 통해 접근된다. 일반적으로 연결리스트의 노드 추가함수를 설계할 때는 insertLinkedList(L, current, x)와 같이 추가원소의 직전노드를 나타내는 노드포인터 변수 current를 형식인수로 정의해서 추가노드를 current 노드의 다음으로 추가하고, 삭제함수를 정의할 때도 위의 deleteLinkedlist(L, current)와 같이 삭제할 노드의 직전노드를 나타내는 노드포인터 변수 current를 형식인수로 정의해서 current 노드의 다음 노드를 삭제한다. 추가노드나 삭제노드의 직전노드를 형식인수로 정의하지 않으면, 함수 내부에서 그 직전노드를 탐색해서 처리해야 하는데, 이것은 그만큼 함수의 코드를 복.. 2024. 3. 16. 순서리스트의 순차표현 순서리스트의 순차표현(sequential representation)은 순서리스트를 컴퓨터 메모리에 저장할 때 객체들의 논리순서와 메모리의 실제 저장순서를 일치시키는 것으로, 순차적 사상(sequential mapping) 표현이라고도 하며, 순차표현된 순서리스트를 간단히 순차리스트(sequential list)라고 한다. 순차리스트는 일반적으로 배열을 이용해서 구현한다. 원소들의 논리순서를 인덱스로 구성하여 순서리스트를 논리적 배열로 표현하고, 이 인덱스를 프로그래밍 언어에서 제공하는 배열의 인덱스에 순차적으로 대응시켜 메모리에 저장하면 원소들의 논리순서와 메모리 저장순서는 동일하게 된다. 공집합인 순차리스트의 생성 순차리스트를 구현하기 위해서는 원소들을 순차적으로 저장하기 위한 메모리 공간인 1차원 .. 2024. 3. 16. 순서리스트 다른 방법으로, 자료 객체를 나타내는 변수를 그 자료구조를 직접 관리하는 함수 내부에서 정의하는 것을 고려할 수 있는데, 이 경우, 이 자료객체 변수는 그 함수 내부의 코드 외에는 다른 함수에서 직접 참조할 수 없게 된다. 그런데 C에서는 함수의 형식인수로 포인터 변수를 사용하면 다른 함수에서 정의된 변수들을 참조해서 그 값을 변경하는 등의 처리가 가능하다. 따라서 이런 경우 자료구조의 연삼함수는 다른 함수에 정의된 자료객체 변수에 대한 포인터 변수를 형식인수로 정의하고, 이 포인터변수를 통해 자료 객체변수를 참조해서 처리하면 된다. 자료객체 변수를 C의 외부변수로 정의하는 방법은 C의 모든 함수들이 자료객체를 공유해서 사용할 수 있도록 구현하는 방법이다. 그리고 자료객체 변수를 특정 함수 내부에서 정의.. 2024. 3. 16. 이전 1 다음