본문 바로가기
프로그래머의 길/알고리즘

연결 리스트 관련 문자열 중복 삭제 프로그램

by 제이콥케이 2007. 3. 27.
반응형

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

typedef struct list *linked_list;

struct list{
 int info;
 linked_list next;
};


void print(linked_list head);
linked_list insert(void);
linked_list erase(linked_list head);


linked_list insert(void)
{
 linked_list head, tail, temp;
 char c;

 c=getche();

 temp = (linked_list)malloc(sizeof(struct list));
 temp->next = NULL;
 temp->info = c;
 head = tail = temp;
 while(c != '\r')
 {
  c=getche();
  temp = (linked_list)malloc(sizeof(struct list));
  temp->next=NULL;
  if(c != '\r')
  {
   tail->next = temp;
   tail=temp;
   tail->info = c;
  }
 }
 return(head);
}

linked_list erase(linked_list head)
{
 linked_list start, ptr, temp;

 temp = start = head;

 while(start != NULL)
 {
  ptr = start->next;
  while(ptr != NULL)
  {
   if(start->info == ptr->info)
   {
    temp->next = ptr->next;
    free(ptr);
    ptr = temp->next;
   }
   else
   {
    ptr = ptr->next;
    temp = temp->next;
   }
  }
  start = start->next;
  temp = start;
 }
 return(head);
}

void print(linked_list head)
{
 while(head != NULL)
 {
  printf("%c", head->info);
  head = head->next;
 }
}


void main()
{
 int i=0;
 linked_list header;
 
 printf("\n\n**********start***************\n");
 while( (i++) != 5 )
 {
  printf("\n %2d List : ", i);
  header = insert();
  printf("\n");
  header = erase(header);
  printf("  result : ");
  print(header);
 }
 printf("\n\n******** END *********\n");
}


반응형

'프로그래머의 길 > 알고리즘' 카테고리의 다른 글

이중 연결 리스트  (0) 2007.03.28
연결 리스트 관련 문자열 포함 프로그램  (0) 2007.03.28
연결 리스트  (0) 2007.03.27
heap 정렬  (0) 2007.03.13
선택 정렬 (Selection Sort)  (0) 2007.02.28