2010년/연습문제

도서관리프로그램 -기초소스-

뽀얀햄스터 2010. 4. 2. 17:17

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

#include<string.h>

//NODE *deletef(char *name, NODE * list);
struct book
{
  char caName[20];
  int    iPrice;
  struct book*next;

};
typedef  struct book BOOK;
int  Input(BOOK *Temp);
BOOK  *insert(BOOK *item, BOOK *list);
void  print_list(BOOK * list);
int  main()
{
  BOOK Temp;
  BOOK *Head=NULL;
  int istate;
  while(1)
  {
    printf("/////////도서관리///////////\n");
    printf("///////// 1.입력  //////////\n");
    printf("///////// 3.출력  //////////\n");
    printf("///////// 4.종료  //////////\n");
    istate=getch();
    fflush(stdout);
    if('4'==istate)
    {
      break;      
    }
    else if('1'==istate)
    {
      Input(&Temp);
      fflush(stdout);
      Head=insert(&Temp,Head);
      fflush(stdout);
    }
    else if('3'==istate)
    {
      print_list(Head);
      fflush(stdout);
    }
  }  

  return 0;
}
int  Input(BOOK *Temp)
{
  if(NULL==Temp)
  {
    return -1 ;
  }
  printf("책이름을 입력하세요  : ");
  fflush(stdout);
  scanf("%s",Temp->caName);
  printf("책가격을  입력하세요~ :  ");
  fflush(stdout);
  scanf("%d",&(Temp->iPrice));
  return 0;
}
BOOK  *insert(BOOK *item ,BOOK *list)
{
  BOOK *current=NULL;
  BOOK *follow=NULL;
  BOOK *newnode=NULL;
  current=follow=list;

  if(NULL==item)
  {
    return list;
  }
    
  if((newnode=(BOOK *)malloc(sizeof(BOOK)))==NULL)
  {
    printf("NO memory   allocated..\n");
    return list;
  }
  *newnode=*item;
  while(1)
  {
    if(NULL==current) //연결리스트 제일 끝일때 아님 제일처음일때 break;
    {      
      break;
    }
    if(0>(strcmp(current->caName,item->caName)))  //중간 삽입할곳을 찾을경우~
    {
      break;
    }
    follow=current;
    current=current->next;
    
      
    
  }
  newnode->next=current;
  if(current==list)
  {
    list=newnode;
  }
  else
  {
    follow->next=newnode;
  }
  
  return list;
}
/*NODE *deletef(char *name, NODE * list)
{
  NODE *current;
  NODE *follow;
  current=follow=list;
  while((current !=NULL)&&(current->data !=item))
  {
    follow=current;
    current=current->next;
  }
  if(current==NULL)
  {
    printf("ITEM  is not found..\n");
    return list;
  }
  if(list==current)
  {
    list=current->next;
  }
  else if(current->next==NULL)
  {
    follow->next=NULL;
  }
  else
  {
    follow->next=current->next;
  }
  free(current);
  return list;
}
void  print_list(NODE * head)
{
  
  int inum;
  for(inum=0;NULL!=head;head=head->next)
    {
      printf("%c==>",head->data);

    }
  printf("NULL");
}*/

void  print_list(BOOK *list)
{
  
  while(NULL!=list)
  {
    printf("책이름 : [%s]",list->caName);
    printf("\n------------------------------\n");
    printf("책가격 : [%d]원\n",list->iPrice);
    list=list->next;
  }
  
}