관리 메뉴

DREAM IT, WISH IT, DO IT

[C - 동적배열] 배열 요소의 삽입과 삭제 본문

Programming/C/C++

[C - 동적배열] 배열 요소의 삽입과 삭제

개발일지 오세빈 2012. 1. 26. 08:41
배열은 C언어가 제공하는 가장 기본적인 자료구조이며 작고 빠른 성능을 보이는 장점을 가진다.
하지만 한 가지 단점이 있는데 배열 요소가 연속된 메모리 공간에 배치되어 있어야 하므로 중간의 요소를 삭제 하거나 새로운 요소를 삽입할 수 없다는 점이 있다. 배열은 일반적으로 삽입, 삭제가 안되는 것으로 알려져 있는데 이는 일종의 고정 관념이다.

이 예제는 문자형 배열에 요소를 삽입, 삭제 하는 방법을 보여준다.



#include stdio.h
#include string.h

char ar[16] = "ABCDEF";

void Insert(int index, char ch)
{
	memmove(ar + index + 1, ar + index, strlen(ar) - index + 1);
	// 해당 index 뒤로 한칸을 밀어서 복사해버린다.
	ar[index] = ch;
}

void Delete(int index)
{
	memmove(ar + index, ar + index + 1, strlen(ar) - index);
	// 해당 index 값을 덮어씌워 버린다.
}

void Append(char ch)
{
	Insert(strlen(ar), ch);
	// 해당 길이 뒤에 추가.
}

int main () 
{
	printf("처음 : %s \n",ar);
	Insert(3, 'X');
	printf("index 3에 X 삽입 : %s \n",ar);
	Delete(5);
	printf("index 5에 제거 : %s \n",ar);
	Append('S');
	printf("S 추가 : %s \n",ar);
	
    return 0;
}

0 Comments
댓글쓰기 폼