==========================================================================================
네트워크
==========================================================================================
<C>
=
- 데이터 정렬(Sort) => 검색 효율 높임
- 인덱스 방식 : ㄱ ㄴ ...(내림차순, 올림차순)
- 이진트리 (평균적으로 검색 속도가 가장 빠름)
1. 연결리스트 없을 때 => 7.3.6 입력
-포인터
-더블포인터
=
#include <stdio.h>
#include <stdlib.h>
typedef struct _node
{
int iNum;
struct _node * stNext; //자기참조포인터(*없으면 이론상 무한대 크기)
}node;
void Node_Print(node *);
void Node_Free(node *);
void Node_Init(node * stTemp)
{
if(0 == stTemp)
{
return;
}
printf("번호를 입력하시오\n");
scanf("%d",&stTemp->iNum);
stTemp->stNext = 0;
return;
}
node * Node_Insert1(node * stHead)
{
node * stTemp = malloc(sizeof(node));
Node_Init(stTemp);
stHead = stTemp; // 함수 종료시 stTemp와 stHead 소멸됨
return stHead; // 종료전 stHead의 값을 리턴 => main()의 Head로 넣어줌
}
void Node_Insert2(node ** stHead)
{
node * stTemp = 0;
//node * stTemp2 = 0;
if(0 == stHead)
{
return;
}
stTemp = malloc(sizeof(node));
Node_Init(stTemp);
if(0 == *stHead) // 처음 한번만 동작
{
*stHead = stTemp; // 함수종료시 stTemp와 stHead 소멸되어도
// 동적할당 받은메모리는 남아있으며
// main()의 Head는 동적할당 받은 메모리를 가리킨다
return;
}
/*
stTemp2 = *stHead;
while(stTemp2->stNext)
{
stTemp2 = stTemp2->stNext;
}
*/
if()
{
}
stHead->stNext = stTemp;
//stTemp2->stNext = stTemp;
return;
}
int main()
{
node * Head = 0;
unsigned int uiCnt;
unsigned int uiInput;
// node * Temp = 0;
/*
Head = malloc(sizeof(node));
Head->iNum = 100;
Head->stNext = malloc(sizeof(node));
Head->stNext->iNum = 200; // LINKED LIST(연결리스트) : 목록
Head->stNext->stNext = malloc(sizeof(node));
Head->stNext->stNext->iNum = 300;
Head->stNext->stNext->stNext = 0;
*/
// head = node_insert1(head); // 포인터
Node_Insert2(&Head); // 더블포인터 - 1번 호출
Node_Insert2(&Head); // 2번 호출
//Node_Insert2(&Head); // 3호출
//printf("input 자료 개수를 입력하시오\n");
//scanf("%d",&uiInput);
//printf("%d-> ",Head->iNum);
//printf("%d-> ",Head->stNext->iNum);
//printf("%d-> ",Head->stNext->stNext->iNum);
/* Temp = Head;
while(0 != Temp )
{
printf("%d-> ",Temp->iNum);
Temp = Temp->stNext;
}
printf("NULL\n"); //putchar('\n');
*/
Node_Print(Head);
/*
free(Head->stNext->stNext); // 반드시 끝에서부터 free
free(Head->stNext);
free(Head);
*/
/*
while(0 != Head)
{
Temp = Head->stNext;
free(Head);
Head = Temp;
}
*/
Node_Free(Head);
return 0;
}
void Node_Print(node * Temp)
{
while(0 != Temp )
{
printf("%d-> ",Temp->iNum);
Temp = Temp->stNext;
}
printf("NULL\n"); //putchar('\n');
return;
}
void Node_Free(node * Head)
{
node * Temp;
while(0 != Head)
{
Temp = Head->stNext;
free(Head);
Head = Temp;
}
return;
}
=
==========================================================================================
AVR
==========================================================================================
=AVR2560
=차동입력 ADC
=ADC 2, 3 PIN 사용
=결과(값이 두배로 나옴..이상함)
============================================================================================
= 폰 홈버튼 기능처럼 기능
-짧게 화면
-길게 기능
=time counter interrupt overflow 기능
TC 0 1초
-A0 : 스위치 입력
-A4,A5 : LED 출력
-VECTOR
=분주비
1024
=
<INTERRUPT.H>
<INTERRUPT.C>
<MAIN.C>
<MAKEFILE>
=
=결과
-5초 이하 => LED 5번 ON
-5초 초과 => LED 6번 ON