1.자료구조의 정의
2.자료구조의 종류
3.배열 자료구조란?
4.1차원 배열 선언 규칙
5.배열의 특징
6.1차 배열 초기화
7.간단한 예제(배열 추가 및 삭제)
- 컴퓨터에서 처리할 자료를 효율적으로 관리하고 구조화시키기 위한 학문
- 자료를 효율적으로 사용하기 위해서 자료의 특성에 따라서 분류하여 저장 및 처리하는 모든 작업을 의미
- 자료구조는 자료 처리의 성능과 효율에 직접적인 영향을 미치므로 현실 세계의 실제 자료들의 관계를 잘 반영 할 수 있어야 하고, 효율적으로 자료처리를 수행 할 수 있도록 간단명료 해야 한다.
- 선형 자료구조 : 배열, 연결리스트, 스택, 큐,등
- 비선형 자료구조 : 트리,그래프, 등
동일한 데이터형 변수의 집합을 의미
배열 명 뒤의 대괄호([])안에 정수형 배열 크기를 지정하면 그 크기만큼 배열 요소(원소, 방)가 할당됨
- 동일한 데이터 형 변수의 집합이다.
- 메모리 상의 연속적인 공간에 할당된다.
- 배열 곧 그 배열의 시작 주소 상수명은 이다.
*배열 요소는 첨자로 구분하며 첨자는 0부터시작된다.
- 배열 전체의 초기화는 배열 선언문 에서만 가능하다.
- 초기화 데이터는 중괄호({})로 묶어준다.
(단, 1차원 char 배열을 문자열로 초기화 할때는 중괄호를 생략가능)
3.배열 요소의 개수보다 초기화 데이터가 부족하면 남는 요소는 0로 채워진다.
4.배열 요소의 개수보다 초기화 데이터가 많으면 compile Error 가 발생
5.배열 선언시 배열 크기는 생략할 수 없으나, 초기화 데이터가 있는 경우에는 배열 크기를 생략 가능
6.문자열을 char 배열에 저장할때는 배열 크기를 문자열의 길이 +1((NULL문자 저장 공간)만큼으로 정한다.
#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");
}