책 링크: http://www.yes24.com/Product/Goods/6214396
문제에 필요한 무료 소스자료 링크:https://www.orentec.co.kr/jaryosil/DA_ST_1/add_form1.php
배운점
1.추상자료형(ADT)
"구체적인 기능의 완성과정을 언급하지 않고,순수하게 기능이 무엇인지를 나열한 것을 <추상 자료형> 라 한다."
사용자에게 사용방법 이외의 불필요한 부분까지 알도록 부담주지 않기위해서다.
구현한 추상자료형 기능들이 안에 구현을 안 들여다봐도 잘 사용할수있게 만든거면 잘 만든 추상자료형 이라고 할수있다.
#include <stdio.h>
#include<stdlib.h>
#include "ArrayList.h"
int main(void)
{
//문제 03-1 연습
List *head=malloc(sizeof(List));//리스트 생성
LData data;
LData total=0;
ListInit(head); //초기화 함수사용
for (int i = 1; i < 10; i++) {
LInsert(head, i);
}
if (LFirst(head, &data)) {
total += data;
while (LNext(head, &data)) {
total += data;
}
printf("total is:%d \n", total);
}
if (LFirst(head, &data)) {
if (data % 2 == 0 || data % 3 == 0) {
LRemove(head);
}
while (LNext(head, &data)) {
if (data % 2 == 0 || data % 3 == 0) {
LRemove(head);
}
}
}
if (LFirst(head, &data)) {
printf("%d ", data);
while (LNext(head, &data)) {
printf("%d ", data);
}
}
return 0;
}
실행결과
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include"ArrayList.h"
#include"NameCard.h"
int main(void) {
char name[30];
char phone[30];
NameCard* name1 = malloc(sizeof(NameCard));
NameCard* name2 = malloc(sizeof(NameCard));
NameCard* name3 = malloc(sizeof(NameCard));
NameCard* pdata = malloc(sizeof(NameCard));
List* list = malloc(sizeof(List));
name1 = MakeNameCard("sungmin","01050624408");
name2 = MakeNameCard("tan", "010505647874");
name3 = MakeNameCard("j-ho", "01050562224");
ListInit(list);
LInsert(list, name1);
LInsert(list, name2);
LInsert(list, name3);
//특정이름 찾아서 정보출력,정보수정
if (LFirst(list,&pdata)) { //포인터의 주소를 가져와야지 메인함수에서 pdata 의 값이 변경된다.
if (!NameCompare(pdata, "j-ho")) {
ShowNameCardInfo(pdata);
ChangePhoneNum(pdata, "01051112222");
}
else {
while (LNext(list,&pdata)) {
if(!NameCompare(pdata, "j-ho")) {
ShowNameCardInfo(pdata);
ChangePhoneNum(pdata, "01051112222");
}
}
}
}
//특정 이름 찾아서 정보삭제
if (LFirst(list, &pdata)) {
if (!NameCompare(pdata,"tan")){
LRemove(list);
}
else {
while (LNext(list, &pdata)) {
if (!NameCompare(pdata, "tan")) {
pdata =LRemove(list);
free(pdata);
break;
}
}
}
}
// 남은 사람정보 모두 출력
if (LFirst(list, &pdata)) {
ShowNameCardInfo(pdata);
while (LNext(list, &pdata)) {
ShowNameCardInfo(pdata);
}
}
return 0;
}