리스트 만들기
struct NODE
{
int birthyear;
NODE *pNext;
//다음 노드를 가르킬 포인터
};
// 리스트 구조체
NODE *seed = NULL;
// 리스트의 첫 머리
void pushback(NODE node)// 내용을 받는다.
{
NODE *pNewNode = new NODE;
memcpy(pNewNode,&node,sizeof(NODE));
//받은 네용을 동적할당된 노드에 메모리카피를 한다.
if(seed == NULL)
seed= pNewNode;
//시드에 아무것도 들어있지 않을경우 첫번째 노드를 붙힌다.
else
{
NODE *pNode = seed;
while(pNode->pNext)
{
pNode = pNode->pNext;
}
//리스트의 끝을 검사하는 부분 pNext의 값이Null이면 멈춘다
pNode->pNext = pNewNode;
//그리고 pNext에 세로운 노드를 붙힌다.
}
}
// 리스트를 연결시켜주는 함수
void output(int i)
{
int cnt = 0;
// 카운터
NODE *pNode = seed;
while(cnt != i)
{
pNode = pNode->pNext;
cnt++;
}
cout<< pNode->birthyear;
printf(" %p",pNode);
cout<< endl;
}
// 출력해주는함수
void clear()
{
NODE *temp;
NODE *pNode = seed;
while(pNode->pNext)
{
temp = pNode;
pNode = pNode->pNext;
delete[] temp;
}
}
//메모리를 지워주는 함수
int _tmain(int argc, _TCHAR* argv[])
{
NODE node;
node.birthyear =1986;
node.pNext = NULL;
NODE NODE2;
NODE2.birthyear =1899;
NODE2.pNext = NULL;
NODE NODE3;
NODE3.birthyear =1800;
NODE3.pNext = NULL;
pushback(node);
pushback(NODE2);
pushback(NODE3);
printf("%p\n",seed);
output(0);
output(1);
output(2);
return 0;
}
오늘 저번주부터 배우기 시작했는 리스트에 대해서 다시 배웠다.
될듯하면서 안되던 그게 오늘 보니 적절하게 풀리기 시작한다.
하지만 아직도 이해 된듯 하면서 이해가 잘안가는 부분이 몇곳있다.
콜 바이 레퍼런스! 즉 메모리 주소로 불러서 수정한다는것인데.
스텝 바이 스텝으로 따라가면 되는거 같은느낌으로 안되는 함수가 된다.
아직 프로그래머 적으로 이해 하는게 잘 안되는거 같다.