자료의 논리적 순서와 메모리 상 물리적 순서가 일치 X
개별적으로 위치하고 있는 원소의 주소를 연결하여 하나의 전체적인 자료구조를 이룬다.
링크를 통해 원소에 접근 => 순차 리스트에서처럼 물리적인 순서를 맞추기 위한 작업 필요 X
자료구조 크기 동적 조정 가능 => 메모리의 효율적 사용 가능
연결 리스트에서 하나의 원소에 필요한 데이터를 갖고 있는 자료 단위
구성 요소
1) 데이터 필드
원소의 값을 저장하는 자료구조
저장할 원소의 종류나 크기에 따라 구조를 정의하여 사용
2) 링크 필드
다음 노드의 주소 저장

노드가 하나의 링크 필드에 의해 다음 노드와 연결되는 구조
헤드가 가장 앞의 노드를 가리키고 링크 필드가 연속적으로 다음 노드를 가리킴
최종적으로 NULL을 가리키는 노드가 리스트의 마지막 노드





addtoFirst(L, i) { // 리스트 포인터 L, 원소 i
new <= createNode(); // 새 노드 생성
new.data = i;
new.link = L;
L = new;
}
add(L, pre, i) // 리스트 L, 노드 pre, 원소 i
new <- createNode(); // 새로운 노드 생성
new.data = i;
if(L == NULL) {
L = new;
new.link = NULL;
}
else {
new.link = pre.link;
pre.link = new;
}
addtoLast(L, i) // 리스트 L, 원소 i
new <- createNode(); // 새로운 노드 생성
new.data = i;
new.link = NULL;
if(L == NULL) { // 빈 리스트일 때, 최초 노드 추가
L = new;
return;
}
temp = L; // 노드 링크 이용하여 리스트 순회
while(temp.link != NULL) { // 마지막 노드 찾을 때까지 이동
temp = temp.link;
}
temp.link = new; // 마지막 노드 추가


delete(L, pre) { // 리스트 L, 노드 pre
if(L == NULL) error;
else {
targe =pre.link; // 삭제 노드 지정
if(target == NULL) return;
pre.link = target.link;
}
freeNode(target) // 할당된 메모리 반납
}
양쪽 방향으로 순회할 수 있도록 노드를 연결한 리스트
두 개의 링크 필드와 한 개의 데이터 필드로 구성

