본문 바로가기

학부_대학원/자료구조

선형 리스트[Linear List]

SMALL

리스트라고 하면 자료를 나열한 목록이라고 할 수있다.

우리가 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--;

}

LIST

'학부_대학원 > 자료구조' 카테고리의 다른 글

자료구조 - 원형 연결 리스트  (0) 2016.08.01
연결 자료구조[단순 연결 리스트]  (0) 2016.07.29
다익스트라 알고리즘[Dijkstra Algorithm]  (0) 2016.07.28
Tree [트리]  (0) 2016.07.28
Graph[그래프]  (0) 2016.07.26