Computer/C/C++

단순 연결 리스트

고양이는생선을좋아해 2013. 5. 26. 17:13

#Linked List

- 순차 자료구조에서의 연산 시간에 대한 문제와 저장 공간에 대한 문제를 개선한 자료 표현 방법

 

#삽입,삭제,정렬

typedef struct node
{
     int data;
     node* pNext;
};

void insert(node** head,int data);
void remove(node** head, int data);
void print(node* head);
void sort(node* head);

 

int main()
{
     node* head = NULL;
     int num,i,rm;
     for(i=0; i<5; i++)
     {
          printf("Input : ");
          scanf("%d",&num);
          insert(&head,num);
     }
 
     print(head);
 
     sort(head);
 
     printf("=======After Sort======== \n");
 
     print(head);

     printf("remove data :");
     scanf("%d",&rm);

     remove(&head,rm);

     printf("=======After remove======== \n");
     print(head);
 
     return 0;
}

void insert(node** head,int data)
{
       node* newnode = (node*)malloc(sizeof(node));
       newnode->pNext = NULL;
       newnode->data = data;

 if(*head==NULL)
      *head = newnode;
 else

{
      newnode->pNext = *head;
      *head = newnode;

}

}

void print(node* head)
{
     node* pW;
     pW = head;
     while(pW)
     {
          printf("%d",pW->data);
          pW = pW->pNext;
     }
     printf("\n");
}

void sort(node* head)
{

     int temp;
     node* pW1;
     node* pW2;
     pW1 = head;
     pW2 = head;
     
 while(pW1)
 {
      while(pW2)
      {
       if(pW1->data < pW2->data)
           {
            temp = pW1->data;
            pW1->data = pW2->data;
            pW2->data = temp;
           }
           pW2 = pW2->pNext;
      }
      pW1 = pW1->pNext;
      pW2 = pW1;
     }
}

void remove(node** head, int data)
{
     node* pW;
     node* pre;
     pW = *head;
     pre = pW;

     if(pW->data == data)
     
          *head = pW->pNext;
          free(pW);
     }
     else
     {
         while(pW)
         
               if(pW->data==data)
               {
                    pre->pNext = pW->pNext;
                    break;
               }
               pre = pW;
               pW = pW->pNext;
          }
         free(pW);
     }
}