리스트는 구현방법에 따라 순차 리스트, 연결 리스트로 나눌 수 있다.
▶순차리스트 - 배열을 기반으로 구현된 리스트
▶연결리스트 - 메모리의 동적 할당을 기반으로 구현된 리스트
또한 리스트 자료구조는 데이터를 나란히 저장하며 중복된 데이터의 저장을 막지 않는다.
그리하여 리스트를 활용하는 예를 코드로 살펴보면 다음과 같다.
코드 부분 설명 ▼
다음 코드에서는 먼저 리스트를 생성 및 초기화한 후 11, 11, 22, 22, 33 라는 값을 저장한다.
그리고 LCount 함수를 통해 현재 리스트 안에 있는 데이터의 수를 출력하고 LFirst 함수로 첫 번째 데이터를 조회한 후
while 문을 통해 다음으로 넘어가면서 데이터를 출력한다.
LFirst 함수를 통해 첫 번째 데이터부터 조회하는데 22 라는 값을 가진 데이터를 발견하면 LRemove 함수를 통해 제거한다.
22라는 데이터를 제거한 후 아까와 같은 방식으로 리스트를 출력하고 종료한다.
그리고 다음은 초기화, 삽입,삭제, 조회의 기능을 수행하는 함수를 정의한 코드이다.
코드 부분 설명 ▼
ListInit 함수(초기화 기능)
numOfData 는 데이터의 수 , curPosition 은 배열의 인덱스 값
리스트 안 데이터의 수를 0으로 하고 배열의 인덱스 값은 -1로 한다.
LInsert 함수(삽입 기능)
더 이상 저장할 공간이 없다면 "저장이 불가능합니다" 문장 출력
공간이 있다면 배열의 앞부분부터 데이터를 저장 후 데이터 개수 증가
LFirst 함수(첫 번째 데이터 조회 기능)
저장된 데이터가 없으면 false 반환
있으면 배열의 인덱스 값을 0으로 두어 첫 번째 데이터를 참조
pdata가 가리키는 공간에 데이터 저장
LNext 함수(다음 데이터 조회 기능)
더 이상 참조할 데이터가 없다면 false 반환
있다면 curPosition 의 값을 증가시켜 순차적으로 데이터를 참조할 수 있도록 함
LRemove 함수(데이터 삭제 기능)
curPosition 을 확인하여 조회가 이루어진 데이터의 위치를 확인한 다음
그 데이터를 삭제 후 뒤에 있는 데이터를 앞으로 한 칸씩 이동시킴
LCount 함수(데이터 개수 반환 기능)
numOfData 의 값을 반환(데이터 개수 의미)
'CS > 자료구조' 카테고리의 다른 글
자료구조 - 원형 연결리스트 (0) | 2024.01.15 |
---|---|
자료구조 - 연결리스트(구조체와 포인터 사용) (0) | 2024.01.10 |
자료구조 - 재귀의 활용 (0) | 2024.01.07 |
자료구조 - 이진 탐색 알고리즘 (1) | 2024.01.05 |
자료구조 - 간단 개념정리 (0) | 2024.01.05 |