[데이터 구조] 단일 체인 테이블 의 기본 연산

2874 단어
1. 초기 화
//         
LinkList InitiateLinkList( )
{
     LinkList  head;              //   
     head = malloc(sizeof(node));  //        ,     
     head ->next = NULL;
     return  head;
}

2. 시계 장 구하 기
//     head   
int LentghLinklist ( LinkList head )
{
      Node * p = head;           //p     ,   p     
      int cnt = 0;               //      
      while(p->next != NULL)     //        
      {
           p = p->next;         //          
           cnt ++; 
      }
      return cnt;
}

3. 테이블 요소 읽 기
//    head    i     ,   ,           ,    NULL
Node * GetLinklist(LinkList head,int i)
{
      Node *p;                             //p     
      p = head ->next;                     //   p     
      int c = 1;  
      while ( (cnext;
             c++;
      }
      if ( i == c )   return p;            //   i   
      else return NULL;                    //i<1   i>n ,i    ,    
}

4. 포 지 셔 닝
//  head       x      ,        ,     0
int LocateLinklist( LinkList head , DataType x)
{
      Node * p = head;                     //p     
      p = p->next;                         //   p     
      int i=0;                             //i       ,      0
      while (p!= NULL && p->data !=x)      //    
      {
             i++;
             p = p->next;
      }
      if (p!= NULL ) return i+1;
      else return 0;
}
 
   
  

5.插入

//  head  i              x      
void InsertLinklist ( LinkList head , DataType x,int i )
{
      Node *p , *q;
      if ( i == 1) q = head;
      else q = GetLinklist (head ,i-1);          //  i-1       
      if (q == NULL )                            // i-1      
            exit ("        ");
      else
            {
                   p = malloc ( sizeof(Node));
                   p->data = x;                  //     
                   p->next = q->next;            //       *q     
                   q->next = p;                  //  *q   
            }
}

6. 삭제
//   head  i   
void DeleteLinklist (LinkList head,int i)
{
      Node *p;
      if(i==q) q=head;
      else q=GetLinklist(head,i-1);          //             
      if(q!=NULL && q->next != NULL)         //               
      {
             p=q->next;                      //p       
             q->next=p->next;                //      
             free(p);                        //       p   
      }
      else exit ("         ");      //     
}

좋은 웹페이지 즐겨찾기