Programming
-
CircularList 구현Programming/C,C++ 2012. 10. 21. 14:23
오늘은 원형리스트(circularList)에 대해서 정리해보겠습니다. 일반적으로 단일리스트와 다르게 원형 리스트는 맨마지막 노드의 링크가 NULL이 아니라 맨 처음 노드와 연결되어 있습니다.원형리스트의 첫 번째 노드의 위치 값(position)은 0이며, 마지막 노드의 위치의 인덱스는 CurrentElementCount -1 입니다. 그러면 어떻게 원형리스트를 순환하면서 이게 첫번째인지, 마지막 노드인지 알수 있을까요?이런 문제를 해결하기 위해서 HeaderNode가 하나 존재합니다. 즉, pPreNode == HeaderNode->link 현재 찾고 있는 노드와 헤더노드와 가르키는 곳이 동일하다면 pPreNode는 현재 마지막 노드에 있다는 것을 알 수 있습니다. 이번 원형 리스트 또한 분할 컴파일을 ..
-
작지만 큰 차이!Programming/C,C++ 2012. 10. 18. 14:22
linkedlist를 구현하면서 addLLElement()함수를 보면 다음과 같은 내용이 있습니다. *pNewNode = element; 과연 왜 이렇게 쓴것 일까요? pNewNode -> data = element.data로 쓰면 안되는 것일까요? 이렇게 하는 이유는 만약 ListNode에 새로운 원소, 즉 data 말고 다른 자료형을 하나 더 추가한다면 코드가 한줄 더 늘어나야합니다. 하지만 *pNewNode = element를 쓰므로써, 다시 바꿔야 하는 수고스러움을 덜수 있습니다. 작지만 크게 배웠네요.
-
linkedlistProgramming/C,C++ 2012. 10. 18. 09:14
List는 구조가 단순하여 가장 널리 사용되는 기초적인 자료구조순서대로 저장하는 자료구조 -> 여러 개의 자료가 일직선으로 서로 연결된 '선형 구조' Ex) 리스트의 구조문자열: 'Data'D-a-t-a문자열이 순서대로 저장되는 선형구조 리스트의 추상 자료형 리스트의 추상 자료형 입니다. 추상자료형에 제가 만들 list의 함수들과 역활등이 정해져 있습니다. 리스트는 배열 리스트와 포인트를 이용하여 구현하는 연결리스트 두 가지로 나눌 수 있습니다. 배열 리스트는 미리 크기를 정해줘야 하지만연결 리스트는 미리 크기를 정해줄 필요가 없습니다(새로운 원소를 추가할 경우 동적으로 원소를 생성하고 포인터로 이어주기만 하면 됩니다.) 연결 리스트 연결리스트의 노드는 자료를 저장하는 부분(data)와 링크를 저장하는 ..