2008년 11월 4일 화요일

Simple LinkedList

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

#define MAX 256

// 구조체정의

struct sample{

  char line[MAX];
  struct sample *next;
};

void main(void){

  FILE *fp;
  char buf[MAX];

  struct sample *head, *tmp, *tail;
 
  fp = fopen("test.c","r");

  if(fp == NULL){
   printf("file not found");
   exit(1);
 }

// 연결리스트 초기화
  head = NULL;
 
// 파일의 끝을 만날때 까지 한 라인씩 읽어 buf 배열에 저장
 while(fgets(buf,MAX,fp) != NULL){
 
    tmp = (struct sample*)malloc(sizeof(struct sample));
   
    strcpy(tmp->line, buf);
   
   
// 생성된 노드에 연결
if(head == NULL)
  head = tmp;

else // head가 NULL이 아니면, 마지막(taill) 에 노드연결 
  tail->next = tmp;

tail = tmp; //tmp 가 마지막 노드 이므로 tmp가 tail이 됨

tail->next = NULL; // tail 의 다음 노드는 없으므로 NULL


} // end of while

close(fp);

// 연결 리스트에 접근

tmp = head;

// 다음 노드가 NULL 일때 까지 반복

while(tmp->next !=NULL){

  printf("%s", tmp->line);
 
 // 다음 노드로 이동

  tmp  = tmp->next;

} // end of while

free(tmp);



Blog2Book "임베디드 프로그래밍 C 코드 최적화" 중에서 ...

댓글 없음:

댓글 쓰기