반응형
선형리스트를 이용한 삽입/삭제/탐색/출력
#include "stdafx.h"
#include "stdlib.h"
#define MAX 100
int list[MAX], n; //list[max] 선형 리스트, n은 데이터의 갯수
void First();//프로그램소개
void HeadLine();//헤드라인
void insert();//삽입
void delet();//삭제
void exploration();//탐색
void output();//출력
void end();//종료
int main()
{
int num = 0;
First();
while (num != 5)
{
HeadLine();
printf("\t어떤 작업을 할까요? : ");
scanf_s("%d", &num);
switch (num)
{
case 1://삽입
insert();
system("cls");
break;
case 2://삭제
delet();
break;
case 3://탐색
exploration();
break;
case 4://출력
output();
break;
case 5://종료
end();
break;
}
}
return 0;
}
void First() //프로그램 설명
{
printf("\t=================================\n");
printf("\t이 프로그램은 선형리스트를 이용하여\n");
printf("\t삽입,삭제,탐색,출력 하는 프로그램입니다.\n\n");
printf("\t 작성자 : 2015244055 김성민\n");
printf("\t=================================\n");
}
void HeadLine()//헤드라인
{
printf("\t=================================\n");
printf(" \t\t1. 삽입\n");
printf(" \t\t2. 삭제\n");
printf(" \t\t3. 탐색\n");
printf(" \t\t4. 출력\n");
printf(" \t\t5. 종료\n");
printf("\t=================================\n");
}
void insert() //삽입
{
int num2 = 0;// 삽입할 숫자
int i, j, k = 0;
printf("\t삽입할 숫자를 입력하시오 : ");
scanf_s("%d", &num2);
if (list[0] == NULL)
{
list[0] = num2;
n++;
}
else
{
for (i = 0; i < n&&k != 1; i++)
{
if (num2 <= list[i])
{
for (j = n; j >i; j--)
{
list[j] = list[j - 1];
}
list[i] = num2;
k = 1;
}
}
if (num2 > list[n - 1])
{
list[n] = num2;
}
n++;
}
}
void delet() //삭제
{
int num3;
int i, j = 0, a = 0, cnt = 0;
printf("\t 삭제할 숫자 : ");
scanf_s("%d", &num3);
for (i = 0; i < n; i++)
{
if (list[i] == num3)
{
j = i;
cnt++;
}
}
if (cnt == 0)
{
printf("\t입력하신 %d는 배열에 없는 수입니다.\n",num3);
}
else
{
list[j] = 0; //삭제된 자리 초기화
n--;//데이터의 갯수가 하느 줄어듬
for (a = j; a < n; a++) //삭제된 자리에 뒤에있던 배열을 추가
{
list[a] = list[a + 1];
}
}
}
void exploration()//탐색
{
int num4 = 0;//탐색할 변수지정
int i, j = 0, cnt = 0;
printf("\t탐색할 숫자를 입력하시오 : ");
scanf_s("%d", &num4);
printf("\n");
for (i = 0; i < n; i++)
{
if (list[i] == num4)
{
j = i;
cnt++;
}
}
if (cnt>0)
{
printf("\t%d는 list[%d]에 있습니다.\n\n", num4,j);
}
else
{
printf("\t%d는 배열에 없습니다.\n\n", num4);
}
cnt = 0;
}
void output()//출력
{
int i;
printf("\t현재 입력된 숫자 : ");
for (i = 0; i < n; i++)
{
printf("\t%d", list[i]);
}
printf("\n\n");
}
void end()//종료
{
system("cls");
printf("\t종료를 선택하셨습니다.\n\n");
exit(0);
}
반응형
'Computer Science > 데이터 구조' 카테고리의 다른 글
(데이터 구조) 연결리스트(Linked List)을 이용한 제일 뒤에 삽입 / 검색 / 삭제 /출력 (0) | 2018.05.07 |
---|