C언어 수업정리/4월 수업정리

4월 23일 연결리스트 다른방법

송시혁 2013. 4. 23. 14:37

예제 10-4


#include <stdio.h>
#include <stdlib.h>

typedef struct node
{
  char data;
  struct node *next;
}NODE;
  
int main()
{
  NODE *list, *temp;
  list = (NODE *) malloc (sizeof(NODE));
  list->data='a';
  temp = list;
  temp->next = (NODE *) malloc (sizeof(NODE));
  temp= temp->next;
  temp ->data ='b';
  temp -> next = (NODE *) malloc (sizeof(NODE));
  temp = temp->next;
  temp->data='c';
  temp->next = NULL;
  
  temp = list;
  while(list != 0)
  {
    printf("%5c\n", list->data);
    temp = temp->next;
    free(list);
    list = temp;
  }
  return 0;
}
일단 list가 동적 할당을 받고 임의 구조체메모리를 받는다.


1. temp = list; 에서 temp 또한 malloc을 가르킨다.

2. temp= temp-> next; 에서   temp-> next는두번째 malloc을 받고 가르킨다.
    그리고 이것을 temp에 대입한다. data에 'b'를 삽입하고나서 
    temp -> next 다시 동적할당을 받는다.

3. temp= temp-> next; 에서 temp는 세 번째 malloc을 가르키게 된다.

이과정을 아래그림으로 표현 하였다.