Soft Ware/C 언어!!

realloc을 이용한 원형 리스트 입니다

달려가보자 2012. 1. 13. 19:29


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

typedef struct List
{
 struct List *before_List;
 int Data;
 struct List *next_List;

}List;
unsigned int count = 0;
enum cData {SUCCESE=1, FALSE}CData;

int makeList(List ** Head, int iData)
{
 
 int *pData = 0;
 int size_Data = 0 ;
 List ** copy_Head = Head;
 List *realList = 0;
 static List *beforeData = 0;
 int * a = 0;

 size_Data = sizeof(List);
 
 count++;

 *copy_Head = (List *)realloc(*copy_Head,((count)*size_Data));
 
 if((*copy_Head) == NULL)
 {
  printf("realloc False\n");
  exit(0);
 }
 else
 {
     if(count == 1)
  {
   (*copy_Head) ->Data = iData;
   (*copy_Head) ->before_List = (*copy_Head);
   (*copy_Head) ->next_List = NULL;
   beforeData = *copy_Head;
  }
  else
  {
   pData=(int*)*copy_Head;

   realList = (List*)(pData+(3*(count-1)));
   realList->before_List = beforeData;
   realList->Data = iData;
   realList->next_List = *copy_Head;

   (*copy_Head)->before_List = realList;
   realList->before_List->next_List = realList;

   beforeData = realList;

  }
 }
 
 return SUCCESE;
}

int main()
{
 int input_Data = 0,fuction_result = 0;
 static List * List_Data = 0;

 
 while(input_Data != EOF)
 {
  printf("Data input : ");
  scanf("%d",&input_Data);

  fuction_result = makeList(&List_Data,input_Data);

  if(fuction_result != 1) printf("Fuction return False\n");
  else printf("Fuction return SuCCeSE\n");
 }

 return 0;
}
한번 만들고 싶어서 만들어 봤네요 ㅎㅎ

처음에 realloc을 개념을 착각해서 ㅠㅠ 삽질좀 했네요 ㅎㅎ

realloc은 한번에 공간을 재할당한다는것을 잃지 마세요 ^^