Linked List
#include <stdio.h>
/*struct _node
{
int iNum;
}; //1번
typedef struct _node{} NODE;*/ //2번
typedef struct _node
{
int iNum;
struct _node *next;
}NODE; //1번+2번(이렇게 쓰는 구조체가 편리)
int main()
{
NODE one;
NODE two;
NODE three;
NODE *p;
//초기값
one.iNum = 1;
two.iNum = 2;
three.iNum = 3;
//값출력
printf("one.iNum = %d\n", one.iNum);
printf("two.iNum = %d\n", two.iNum);
printf("three.iNum = %d\n", three.iNum);
//각주소를 next에 저장
one.next = &two;
two.next = &three;
three.next = '\0';
//각각 저장값 표현
p = &one;
printf("%d -> ", p -> iNum);
p = p -> next;
printf("%d -> ", p -> iNum);
p = p -> next;
printf("%d -> ", p -> iNum);
printf("NULL\n");
//멤버가 갈 수록 길어져서 좋지 않다
printf("%d -> ", one.iNum);
printf("%d -> ", one.next -> iNum);
printf("%d -> ", one.next -> next -> iNum);
printf("NULL\n");
//다수면 for문 쓰는게 최고
for(p = &one; p != NULL; p = p->next)
{
printf("%d -> ", p -> iNum);
}
printf("NULL\n");
return 0;
}
결과는 같지만 for문을 이용하는 방법이 가장 효율적이다.
#ifndef __NODE_H__ |
자기 참조 구조체란 자기 자신의 구조체를 가리키는 포인터를 멤버로 하는 구조체를 말한다.
|
&array[]을 다음 값을 보고 바꿔주면 된다.
반대로 5 -> 4 -> 3 -> 2 -> 1-> NULL도 위 처럼 값을 보고 주소설정을 해주고
head = &array[1];을
0번주소에 5값이 있으므로
head = &array[0];으로 바꿔주면 된다.
'C 언어 > 임베디드 C' 카테고리의 다른 글
공용체(메모리 겹쳐쓰기를 허용) (0) | 2011.08.22 |
---|---|
열거형 (0) | 2011.08.17 |
구조체를 함수의 인수로 전달하는 방법 (0) | 2011.07.07 |
구조체를 가리키는 포인트변수 (0) | 2011.07.07 |
구조체의 배열 (0) | 2011.07.07 |