리스트 - 자료를 순서대로 저장하는 자료구조.
-> 여러 개의 자료가 일직선으로 서로 연결된(Sequential) 선형 구조를 갖는 자료 구조의 통칭
ex) 폴더 이름 저장
1. 리스트의 종류
1) 배열 (list의 가장 직관적인 방법)
- 일반적인 배열과 같음. container의 크기를 일정하게 설정하여야 함.
- list의 중간에 자료를 지울 때, 자료를 지운 index의 뒷 부분부터 앞으로 한 칸씩 미뤄야 함.
- 반대로 자료를 추가할 때는 해당 index의 원소부터 오른쪽으로 한 칸씩 미룬 뒤 해당 index에 원소를 추가해 야 함.
2) 포인터를 이용한 list
- linked list라고 함.
- 각각의 원소에는 다음 index를 나타내는 pointer값이 있음.(양방향 linked list의 경우 이전 index의 pointer까지도 가지고 있음.)
- 때문에 자료의 크기는 유동적이고 메모리가 허용하는 내에서 추가를 계속 할 수 있음.
- 자료를 삭제하거나 추가할 때 앞 뒤 원소가 갖고 있는 pointer 값만 변경하면 되므로 위의 배열보다 쉽고, cost가 적음.
2. 리스트의 개념
리스트의 예를 통해서 리스트의 개념을 이해한다.
1) 문자 리스트
-> 여러 개의 문자를 차례로 저장.
2) 문자열 리스트
-> 무자열의 끝에는 \0이 추가가 됨. 이는 문자열의 끝을 표시하는 것임.
3) 행렬
아 이거 그리기 너무 힘드네요. 안그릴래 젠장 ㅋㅋㅋ
3*1 행렬 - 1개의 열로 이루어지고 이 열은 모두 3 개의 정수 자료를 저장
4*4 행렬 - 4개의 열로 이루어지고 이 열은 모두 4 개의 정수 자료를 각각 저장.
행렬의 경우 자료를 저장하고 있는 index가 적을 수 있다. 예를 들어 4*4 행렬에서 0이 아닌 값을 갖고 있는 index가 ( 1 , 1 ), ( 2 , 2 ), ( 4 , 4 ) 인 경우
행렬 전체를 저장하는 것 보다 위의 index번호와 해당 원소의 값을 저장하는 것이 memory 효율에 좋다.
4) 다항식의 저장
의 경우 각각의 배열에
4-0-2-1-#-#
을 저장.
# 참고 : 위의 다항식에서는 의 계수가 0 이다. 보통의 경우 계수가 0 이면 표현하지 않지만, 프로그램에서는 저장이 필요하다.
여기 까지가 list의 개념 부분입니다.
list는 그렇게 어렵지 않은데 이유는 자료 구조를 배우는 입장에서는 배열을 많이 접해보았고, list의 종류중 한 가지가 배열이기 때문일 것입니다.
물론, 쉽게 array[] 로 만드는 것은 아니지만,,,,, (memory allocation 을 사용해서 만드는데 조금만 이해하면 그리 어려운 부분은 아닙니다.)
만들고 free 해주는 것만 하면, 나머지는 다른 배열 사용법과 같으니,,,, 직접 코딩을 하는 것도 그리 어렵지 않습니다.
자료구조_1-2부터 몇 chapter에서는 일단 array list 부분을 살펴보겠습니다. 내용이 꽤 많아서 언제쯤 linked list가 나올지 잘 모르겠네요 ㅎㅎㅎㅎ
?여러분의 댓글은 제게 매우 큰 힘이 됩니다!!!!?
'그 외 대학 공부 > 자료 구조' 카테고리의 다른 글
자료 구조_1-2, List - Array List의 구현 (1) | 2012.07.04 |
---|