리스트라고 하면 자료를 나열한 목록이라고 할 수있다.
우리가 C언어 코딩하면서 아는 배열과 같다.
하지만 여기서 Linear List라고 하면 무엇일까?
Linear List의 다른 말은 Ordered List이다.
자료들 간에 순서를 갖는 리스트이다.
원소를 나열한 순서는 원소들의 순서가 된다.
List1 = [object1, object2, object3]
와 같이 1, 2, 3 순서가 맞게 된다.
위에서도 알 수 있듯이 원소들의 순서는 메모리에 저장되는 순서와 같다.
[원소들의 논리적 순서 == 원소들이 저장된 물리적 순서]
복잡도를 개산해보면
원소를 삽입 할 때
1. 원소를 삽입할 빈 자리 만들기
2. 준비한 빈자리에 원소 삽입하기
원소를 삭제 할 때
1. 원소 삭제하기
2. 삭제한 빈자리 채우기
#include "stdio.h"
#include "stdlib.h"
int* Init()
{
int Array[100] = {0};
return Array;
}
void Auto_Insert(int* arg_Arr, int Value);
void Modify_Insert(int* arg_Arr, int Order, int Value);
void Delete(int *arg_Arr, int Order);
unsigned int count = 0;
int main()
{
int Init_Array[100] = { 0 };
int index = 0;
Auto_Insert(Init_Array, 0x1);
Auto_Insert(Init_Array, 0x2);
Auto_Insert(Init_Array, 0x3);
Auto_Insert(Init_Array, 0x4);
Auto_Insert(Init_Array, 0x5);
Auto_Insert(Init_Array, 0x6);
Modify_Insert(Init_Array, 3, 9);
Delete(Init_Array, 0);
for ( index = 0; index < count; index++)
{
printf("%08x\n", Init_Array[index]);
}
system("pause");
}
void Auto_Insert(int* arg_Arr, int arg2_Value)
{
arg_Arr[count] = arg2_Value;
// printf("Address : %08x\n", &arg_Arr[count]);
count++;
}
void Modify_Insert(int* arg_Arr, int Order, int Value)
{
int index = Order;
int tmp = 0;
int tmp_count = 0;
tmp_count = count;
if (count < Order)
{
return;
}
for (; Order <= tmp_count; tmp_count--)
{
arg_Arr[tmp_count + 1] = arg_Arr[tmp_count];
}
arg_Arr[Order] = Value;
count++;
}
void Delete(int *arg_Arr, int Order)
{
if (count < Order)
{
return;
}
for (; Order < count; Order++)
{
arg_Arr[Order] = arg_Arr[Order + 1];
}
count--;
}
'학부_대학원 > 자료구조' 카테고리의 다른 글
자료구조 - 원형 연결 리스트 (0) | 2016.08.01 |
---|---|
연결 자료구조[단순 연결 리스트] (0) | 2016.07.29 |
다익스트라 알고리즘[Dijkstra Algorithm] (0) | 2016.07.28 |
Tree [트리] (0) | 2016.07.28 |
Graph[그래프] (0) | 2016.07.26 |