Taking baby-developer steps

C언어-자료구조 / 2. 배열기반의 리스트 - 특정한 위치 원소 삭제하는 함수 본문

문제풀이연습/C언어 예제풀이 연습

C언어-자료구조 / 2. 배열기반의 리스트 - 특정한 위치 원소 삭제하는 함수

Surin Lee 2021. 3. 25. 21:00

특정한 위치의 원소를 삭제하는 함수

Q. 특정한 위치의 원소를 삭제하는 함수는 어떻게 만들 수 있을까?

#include <stdio.h>
#define INF 10000

int arr[INF]; // 메모리 공간이 거의 무한에 가깝게 존재한다고 가정
int count = 0;

void addBack(int data){
	arr[count] = data;
    count++ ;
}

void addFirst(int data){
	for(int i = count; i>=1; i--){
    	arr[i] = arr[i-1] ;
    }
    arr[0] = data ;
    count++;
}

void show(){
	for(int i = 0; i< count ; i++){
    	printf("%d\n", arr[i]);
    }
}

 

지난 번 포스팅에서 위와 같이 배열기반 리스트에서 data를 배열의 뒤, 가장 앞 에 삽입하는 함수 및 배열에 담겨 있는 모든 원소를 하나씩 출력하는 함수를 정의 했었다. 이번에는 특정한 위치의 원소를 삭제하는 함수이다.

void moveAt(int index){
	for(int i = index; i < count-1; i++){
    	arr[i] = arr[i+1] ;
    }
    count-- ;
}

위와 같이 만들 수 있다. arr라는 리스트 속 원소를 출력하는 함수 show에서 for문이 count에 따라 어디까지 출력할지를 결정하므로, count--를 넣는것이 핵심이었다.

Comments