Soft Ware/자료구조 및 알고리즘

원형 리스트 !!!

달려가보자 2011. 8. 9. 08:24


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

typedef struct Node
{
 struct Node *PrevNode;
 int Data ;
 struct Node *NextNode;
 
}List_Node;

List_Node *create(int Data)
{
 List_Node * NewNode;
 NewNode = (List_Node *)malloc(sizeof(*NewNode));

 NewNode->Data = Data;
 NewNode->NextNode = NewNode;
 NewNode->PrevNode = NewNode;

 return NewNode;
}

int Add(List_Node ** Head, List_Node * NewNode)
{
 if((*Head) == NULL)
  {
   *Head = NewNode;
   (*Head)->NextNode = *Head;
   (*Head)->PrevNode = *Head;
  }
 else
  {
   List_Node * Tail;
   Tail = (*Head)->PrevNode;
   Tail->NextNode->PrevNode = NewNode;
   Tail->NextNode = NewNode;

   NewNode->PrevNode = Tail;
   NewNode->NextNode = (*Head);

   return 1;
  }


}

int RemoveNode(List_Node ** Head, List_Node * NewNode)
{
 if((*Head) == NewNode)
 {
  (*Head)->PrevNode->NextNode = NewNode->NextNode;
  (*Head)->NextNode->PrevNode = NewNode->PrevNode;

  (*Head) = NewNode->NextNode; //헤드가 없어짐으로 다음을 Head로 정의

  NewNode->NextNode = NULL;
  NewNode->PrevNode = NULL;
 }
 else
 {
  List_Node *Temp = NewNode; //없애는 장소를 모르기 때문에
  Temp->PrevNode ->NextNode = NewNode->PrevNode; 
  Temp->NextNode ->PrevNode = NewNode->NextNode;

  NewNode->NextNode = NULL;
  NewNode->PrevNode = NULL;
 }
}

int main()
{
 return 0;
}



//원형의 특징은 헤드와 테일 사이에 넣는다는것이다!!!

이것으로 리스트 구현은 끝이다 !!!