본문 바로가기

개인 공부/데이터 구조

(데이터 구조) 선형리스트를 이용한 삽입/삭제/탐색/출력

728x90
반응형

 

        선형리스트를 이용한 삽입/삭제/탐색/출력

 

#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);
}​

 

728x90
반응형