오늘은 배열 리스트에 대해서 알아보겠습니다.
저번 시간동안에 큐와 스택에 대해서 알아보았으니
리스트는 이해하기 쉬우실겁니다.
List 는 순서대로 자료를 나열하는 방법으로써
가장 많이 사용하는 자료구조형입니다.
여기서 선형과 비선형 자료구조에 대해서 각각 짚고 넘어가보겠습니다.
선형 자료구조는 순서대로 자료를 나열하는 방법이고
비선형 자료구조는 순서대로가 아니라 불규칙 적인 방법으로 자료를 나열하는 구조입니다.
리스트에서 사용하는 추상형 자료형들입니다.
5, 6, 7 의 차이를 잘 알고 넘어가야합니다.
removeListData()는 특정 데이터만 삭제하고 메모리는 삭제하지 않습니다.
deleteList()는 데이터와 메모리 둘 다 삭제(해제)합니다.
clearList()는 모든 데이터를 삭제하고 메모리는 반환하지 않습니다.
리스트의 종류는 큐, 스택과 유사하게 배열 리스트, 연결 리스트 두 가지 종류로 나뉘며
배열 리스트는 C언어의 배열을 사영해서 리스트를 구현하는 방법입니다.
오늘은 위 리스트들 중에서 배열리스트에 대해 알아보겠습니다.
배열리스트를 만드는 첫 번째 단계는 노드의 종류를 설정하는 것입니다.
노드는 자료를 저장하는 단위를 지칭하는 말입니다.
구조체를 사용하여 노드 구조체로 선언합니다.
두 번째 단계는 위의 노드의 구조를 가지고 자료를 저장하는 실제 배열리스트를 정의하는 것입니다.
그림으로 알기 쉽게 정리해보았습니다.
각각 배열의 길이값, 현재 자료의 개수, 저장하기 위한 포인터의 역할을 하는
maxCount, currentCount, pData를 구조체 안의 멤버 변수로 선언을 해줍니다.
다음 단계는 위에서 선언한 노드 구조체, 배열 리스트를 정의한 구조체를 가지고
실제 배열 리스트를 구현해주는 것입니다.
createList()를 생성해 호출했을 때 새로운 메모리에 할당된 배열리스트를 반환해주는 연산자를 만들어줍니다.
그 다음으로는 position에 의해서 자료를 추가해주는 addListData()를 만들어줍니다.
위의 그림은 daaListData()의 알고리즘을 더해 만든 그림입니다.
자료를 넣고 싶은 위츠를 position에 받아 position의 위치에 특정 데이터를 넣는 알고리즘입니다.
알고리즘과 함께 예시로 든 소스를 같이 해석해보시는 시간을 가지면 실력 향상에 도움이 많이 되실겁니다.
'C언어 자료구조' 카테고리의 다른 글
자료구조 8일차 : 연결리스트 (0) | 2023.01.12 |
---|---|
자료구조 7일차 : 연결리스트 (0) | 2023.01.10 |
자료구조 5일차 : 데크큐와 linked 스택, 배열 스택 (0) | 2023.01.08 |
자료구조 3, 4일차 : 큐 (0) | 2023.01.05 |
자료구조 2일차 : 스택에 대하여 (0) | 2023.01.03 |
댓글