CS/자료구조

자료구조 - 연결리스트(배열 이용)

공부 기록장 2024. 1. 9. 20:01

리스트는 구현방법에 따라 순차 리스트, 연결 리스트로 나눌 수 있다.

 

▶순차리스트 - 배열을 기반으로 구현된 리스트

▶연결리스트 - 메모리의 동적 할당을 기반으로 구현된 리스트

 

또한 리스트 자료구조는 데이터를 나란히 저장하며 중복된 데이터의 저장을 막지 않는다.

그리하여 리스트를 활용하는 예를 코드로 살펴보면 다음과 같다. 

전체 실행 코드


 

코드 부분 설명 ▼

 

다음 코드에서는 먼저 리스트를 생성 및 초기화한 후 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 의 값을 반환(데이터 개수 의미)