Coding Log


리스트란 무엇인가

리스트(List) 는 말 그대로 목록이다.

우리가 사용하는 대부분의 목록은 테이블 형태로 표현되며 게시판 또한 게시물을 목록으로 표현한 것이다.

이러한 리스트는 또 다른 말로 순열(Sequence) 라고도 불리며 보통 순서를 가지고 일렬로 나열한 형태로 정의한다.

아래의 사진은 티스토리 블로그의 관리 페이지 중 글 목록을 누르면 나타나는 화면이다.

Screen Shot 2017-08-02 at 20.15.47

추상 자료형 리스트는 위와 같은 목록이나 도표를 추상화한 것이다.

위의 그림에서 제일 위에 있는 작성일, 분류, 글제목, 공개, 보호 등이 필드(Field) 이며 2017.08.01이라는 작성일과 Data Structure/Introduction, 001. 자료구조란 무엇인가 등의 값을 가진 하나의 게시물을 레코드(Record) 라고 볼 수 있다.

필드와 레코드의 개념은 데이터베이스에서 중요하고 본 카테고리에선 별로 중요하지 않으므로 레코드 대신 데이터라고 표현하겠다.

다시 한 번 상기하면 리스트는 데이터가 일렬로 나열된 형태로 뭉쳐져 있는 것인데, 단순히 뭉쳐져 있는 점에선 집합(Set) 과 동일하지만 순서가 존재한다는 점에서 구별된다. 또한 하나의 데이터에 하나의 데이터만 연결되므로 처음과 끝이 각각 하나로 끝나는 점에서 그래프(Graph) 와도 구별된다.

리스트는 아래와 같은 연산을 가지고 있다.

  • Create : 비어 있는 리스트 생성
  • Destroy : 리스트 삭제
  • Insert : 데이터 삽입
  • Delete : 데이터 삭제
  • IsEmpty : 리스트가 비어있는 지 확인
  • Length : 리스트의 길이 반환

위에 연산에 특정 순서값(position)을 가진 파라미터를 넘김으로써 여러 가지 동작을 제어할 수 있으나 후에 포스팅할 리스트의 구현에서 좀 더 자세히 알아보도록 하자.

프로그래밍 언어를 배웠다면 배열(Array) 와 굉장히 유사하다는 것을 느낄 수 있는데, 리스트에는 리스트를 구성하는 각 원소(Element) 들에 순서대로 번호(Index) 를 부여할 수도 있으므로 배열 또한 리스트의 일종으로 볼 수 있다.

Lisp 이란 프로그래밍 언어는 언어 자체가 리스트의 연산을 위해서 만들어진 언어로 언어의 모든 곳에서 리스트를 적극적으로 사용하고 심지어 프로그램 코드또한 리스트 그 자체이기도 하다.

참고 LISP : List Processing, 리습이라고 부른다

리스트를 대대적으로 사용하는 만큼 메모리 관리가 문제이기 때문에 쓰레기 수집 기법을 최초로 사용하기도 하였고 오늘날 대두된 함수형 언어 영향을 주기도 하였다.

참고 위키피디아의 Lisp 문서


DISQUS 로드 중…
댓글 로드 중…

트랙백을 확인할 수 있습니다

URL을 배껴둬서 트랙백을 보낼 수 있습니다