Programming/Algorithm
배열기반 리스트(ArrayList)
OKOK
2018. 5. 7. 17:42
#include <stdio.h>
#include "ArrayList.h"
int main(void) {
List list; // 구조체 변수 선언.
int data;
ListInit(&list); // 선언한 변수 초기화.
LInsert(&list, 11);
LInsert(&list, 11);
LInsert(&list, 22);
LInsert(&list, 22);
LInsert(&list, 33);
printf("current data num : %d \n", LCount(&list));
if (LFirst(&list, &data)) {
printf("%d ", data);
while (Lnext(&list, &data))
printf("%d ", data);
}
printf("\n\n");
if (LFirst(&list, &data)) {
if (data == 2)
LRemove(&list);
while (LNext(&list, &data)) {
if (data == 22)
LRemove(&list);
}
}
printf("current data num : %d \n", LCount(&list));
if (LFirst(&list, &data)) {
pritnf("%d ", data);
while (LNext(&list, &data))
printf("%d ", data);
}
printf("\n\n");
return 0;
}
단점 : 배열의 길이가 초기에 결정되어야 한다. 변경이 불가능 하다. 삭제의 과정에서 데이터의 이동이 매우 빈번하게 일어난다. 장점 : 데이터의 참조가 쉽다. 인덱스 값을 기준으로 어디든 한 번에 참조가 가능하다. |
구조체 선언시 배열을 하나 만들기. 그리고 삽입시에 필요한 numOfData 변수 만들기. 그리고 꺼내서 읽을 때 필요한 curPosition 변수 만들기. 그리고 함수에서는 numOfData 와 curPosition 을 사용해서 List 를 초기화하고, 삽입하고 처음것과 그 다음의 것. 그리고 삭제하는 것이 있습니다. 그리고 추가로 리스트의 개수를 나타내는 함수가 있습니다. 구조체 안에서 값을 접근하기 위해서 (plist->numOfData) 와 같이 -> 연산자를 사용하고 있습니다. |