본문 바로가기

카테고리 없음

[C언어] 배열의 삽입 삭제

void Insert(char *ar, int idx, char ch)
{
	memmove(ar + idx + 1, ar + idx, strlen(ar) - idx + 1);
	ar[idx] = ch;
}
 
void Delete(char *ar, int idx)
{
	memmove(ar + idx, ar + idx + 1, strlen(ar) - idx);
}
 
void Append(char *ar, char ch)
{
	Insert(ar, strlen(ar), ch);
}
 
void main()
{
	char ar[16] = "abcdef";

	printf("최초 : %s\n", ar);
	Insert(ar, 3,'t');
	printf("t삽입 : %s\n", ar);

	Delete(ar, 1);
	printf("b삭제 : %s\n",ar);

	Append(ar, 's');
	printf("s추가 : %s\n",ar);
}

프로그램 실행화면


배열은 참 좋은 녀석(?)이다. 배열의 길이가 얼마나 길던지 상관없이 참조시간이 상수이다. 자료구조 시간에 자주 나오는 이 참조시간은 쫌 중요한 녀석이다.


배열이 길어질수록 참조시간이 길어지면 프로그램 실행 속도가 느려질 수 밖에 없기 때문이다. 하지만 다행이 배열은 참조시간이 상수라서 빠르다.


하지만 보통 배열에 삽입과 삭제가 안된다고 생각한다. 스택구조를 사용하는 이유다 넣고 빼고를 쉽게 하기 위해서이다.


조금의 추가 프로그램만 구성해 준다면 배열도 삽입과 삭제가 가능하다. 위에 있는 프로그램은 그 예이다.


단순히 char 배열이기 때문에 문자 밖에 저장되지 않지만 만약 구조체라면 내가 원하는 단위로 묶어 한방에 저장하고 삭제할 수있다. 아래 링크는 memmove에 관한 예제가 있는 곳이다.