헤더
#pragma once#define FALSE 0#define TRUE 1#define LIST_LEN 100/*데이터 구조체 정의*/typedef int Ldata;typedef struct alist{Ldata arr[LIST_LEN];int numOfData;int curPosition;}AList;/*함수 선언*/typedef AList List;void ListInit(List* plist); /*데이터 선언*/void LInsert(List* plist); /*데이터 저장*/int LRemove(List* plist); /*데이터 삭제 내부함수*/int LFirst(List* plist, Ldata*pdata); /*데이터 확인 내부함수*/int LNext(List* plist, Ldata*pdata); /*데이터 확인 내부함수2*/int LCount(List* plist, Ldata* pdata); /*데이터 개수 확인*/
소스
#include <stdio.h>#include "헤더.h"void ListInit(List* plist) /*데이터 선언*/{plist->numOfData = 0;plist->curPosition = -1;}void LInsert(List* plist) /*데이터 저장*/{if (plist->numOfData >= LIST_LEN) {printf("용량이 가득 찼습니다.");return;}int number;printf("저장할 숫자를 입력하세요.");scanf_s("%d", &number);rewind(stdin);plist->arr[plist->numOfData] = number;printf("저장된 숫자.%d", plist->arr[plist->numOfData]);printf("입력이 완료되었습니다.");(plist->numOfData)++;}int LCount(List* plist,Ldata*pdata) /*데이터 개수 세기*/{int count;count = plist->numOfData;return count;}int LRemove(List* plist) /*데이터 삭제*/{int i;int rpos = plist->curPosition;int num = plist->numOfData;Ldata rdata = plist->arr[rpos];for (i = rpos; i < num - 1; i++)plist->arr[i] = plist->arr[i + 1];(plist->curPosition)--;(plist->numOfData)--;return rdata;}int LFirst(List* plist, Ldata* pdata) /*데이터 확인 내부함수*/{if (plist->numOfData == 0) {printf("저장된 숫자가 없습니다.");return FALSE;}(plist->curPosition) = 0;*pdata = plist->arr[0];return TRUE;}int LNext(List* plist, Ldata* pdata) /*데이터 확인 내부함수2*/{if (plist->curPosition >= (plist->numOfData) - 1)return FALSE;(plist->curPosition)++;*pdata = plist->arr[plist->curPosition];return TRUE;}
메인
#include <stdio.h>#include "헤더.h"void main(){/*저장할 배열리스트 초기화*/printf("초기 데이터 생성중입니다.\n");AList list;int data = 0;int B = 0;ListInit(&list);printf("생성되었습니다.\n");/*메뉴*/while (B != 4){printf("\n1.데이터 추가\n");printf("2.데이터 확인\n");printf("3.데이터 삭제\n");printf("4.종료\n");int menu = 0;scanf_s("%d", &menu);rewind(stdin);if (menu == 1){LInsert(&list); /*데이터 입력*/printf("저장된 총 숫자는 %d개 입니다", LCount(&list, &data));}else if (menu == 2) /*데이터 확인*/{if (LFirst(&list, &data))printf("%d", data);while (LNext(&list, &data))printf(" %d", data);}else if (menu == 3){int DNumber;printf("\n삭제할 숫자를 입력해주세요");scanf_s("%d", &DNumber);rewind(stdin);if (LFirst(&list, &data)){if (data == DNumber)LRemove(&list);while (LNext(&list, &data)){if (data == DNumber)LRemove(&list);}}}else if (menu == 4)return; /*프로그램 종료*/else if (menu > 4)printf("1~4까지의 숫자로 입력바랍니다.");}}
아직 학원같은데 안가고 책,인강만 보고 하는중인데 왜 이걸 이렇게 하지? 싶은게 있다면 피드백 부탁드려요