1차원 배열 자료구조 이해&예제- (개념설명)

채재헌·2022년 7월 12일
0
post-thumbnail

🎈목차


1.자료구조의 정의

2.자료구조의 종류

3.배열 자료구조란?

4.1차원 배열 선언 규칙

5.배열의 특징

6.1차 배열 초기화

7.간단한 예제(배열 추가 및 삭제)


🎆1.자료구조의 정의


  • 컴퓨터에서 처리할 자료를 효율적으로 관리하고 구조화시키기 위한 학문
  • 자료를 효율적으로 사용하기 위해서 자료의 특성에 따라서 분류하여 저장 및 처리하는 모든 작업을 의미
  • 자료구조는 자료 처리의 성능과 효율에 직접적인 영향을 미치므로 현실 세계의 실제 자료들의 관계를 잘 반영 할 수 있어야 하고, 효율적으로 자료처리를 수행 할 수 있도록 간단명료 해야 한다.

🎇2.자료구조의 종류


  • 선형 자료구조 : 배열, 연결리스트, 스택, 큐,등
  • 비선형 자료구조 : 트리,그래프, 등

🧨3. 배열 자료구조란 ?


  • 동일한 데이터형 변수의 집합을 의미


✨4.1차원 배열 선언 규칙


  • 배열 명 뒤의 대괄호([])안에 정수형 배열 크기를 지정하면 그 크기만큼 배열 요소(원소, 방)가 할당됨


🎉5.배열의 특징


  • 동일한 데이터 형 변수의 집합이다.
  • 메모리 상의 연속적인 공간에 할당된다.
  • 배열 곧 그 배열의 시작 주소 상수명은 이다.
    *배열 요소는 첨자로 구분하며 첨자는 0부터시작된다.

🎊6.1차원 배열 초기화


  1. 배열 전체의 초기화는 배열 선언문 에서만 가능하다.
  1. 초기화 데이터는 중괄호({})로 묶어준다.
    (단, 1차원 char 배열을 문자열로 초기화 할때는 중괄호를 생략가능)

3.배열 요소의 개수보다 초기화 데이터가 부족하면 남는 요소는 0로 채워진다.

4.배열 요소의 개수보다 초기화 데이터가 많으면 compile Error 가 발생

5.배열 선언시 배열 크기는 생략할 수 없으나, 초기화 데이터가 있는 경우에는 배열 크기를 생략 가능

6.문자열을 char 배열에 저장할때는 배열 크기를 문자열의 길이 +1((NULL문자 저장 공간)만큼으로 정한다.

🎃7.간단한 예제(배열 추가 및 삭제)

#include <stdio.h>

void deleteData(int *ap, int *pcount, int index); // 데이터 삭제
void insertData(int *ap, int *pcount, int index, int data); // 데이터 삽입
void printArray(int *ap, int cnt); // 데이터 출력
//---------------------------------------------------
int main()
{
	int num[10] = { 1,2,3,4,5,6,7 }; // 1차원 정수 배열 선언 및 초기화  
	int count = 7; //cnt
	printArray(num, count);
	insertData(num, &count, 3, 9);
	printArray(num, count);

	deleteData(num, &count, 3);
	printArray(num, count);

	getchar();
	return 0;
}
//---------------------------------------------------
void insertData(int *ap, int *pcount, int index, int data)
{
	if (index <= *pcount) {		/*인덱스가 해당  pcount 보다 작거나 같으면이면*/
		for (int i = *pcount; i> index; i--) { 
			ap[i] = ap[i - 1]; // 배열 바로 다음 인덱스부터 뒤로 미룬다.
		}

		ap[index] = data;		//데이터 추가 
		(*pcount)++;			// 카운트 증가 
	}
	else {
		return;
	}
	
}
//---------------------------------------------------
void deleteData(int *ap, int *pcount, int index)
{
	if (index < *pcount) {				/*인덱스가 해당 pcount 보다 작으면*/
		(*pcount)--;
		for (int i = index; i < *pcount; i++) {		
			ap[i] = ap[i + 1];			//배열을 앞의 인덱스로 당김

		}
	}
	else {
		return;
	}

}

//---------------------------------------------------
void printArray(int *ap, int cnt)
{
	printf("배열의 내용: ");
	for (int i = 0; i < cnt; i++) {
		printf("%5d", *ap++); //배열 안에 있는 데이터 출력 

	}
	printf("\n");
}

=> 실행 결과 캡쳐 화면

=>* a 배열의 n번방의 데이터를 삭제하면 (n+1)방 이후의 데이터들을 앞으로 당겨주는 작업을 해야한다.

=> a배열의 n 번방에 데이터를 추가하려면(n+1)방 이후의 유효 데이터들을 뒤로 밀어준 후에 n번방에 데이터를 저장해줘야 한다. (단, 추가시에는 실제 배열의 크기 를 초과해서 저장되지 않도록 유의 해야한다.)

0개의 댓글