美文网首页
How to write list in c

How to write list in c

作者: psmyfish | 来源:发表于2018-04-12 20:15 被阅读0次

    2018-04-12

    how to write list in c

    List.h


    #ifndef _List_H
    
    #define _List_H
    
    struct Node;
    
    typedef struct Node *PtrToNode;
    
    typedef PtrToNode List;
    
    typedef PtrToNode Position;
    
    List MakeEmpty(List L);
    int IsEmpty(List L);
    int IsLast(Position P,List L);
    Position Find(ElementType X,List L);
    void Delete(ElementType X,List L);
    Position FindPrevious(ElementType X,List L);
    void Insert(ElementType X,List L,Position P);
    void DeleteList(List L);
    Position Header(List L);
    Position First(List L);
    Position Advance(Position P);
    ElementType Retrieve(Position P);
    #endif   /*_List_H */
    

    List.c

    #include "List.h"
    #include <stdlib.h>
    #include "fatal.h"
    
    struct Node
    {
        ElementType Element;
        Position Next;
        };
    List MakeEmpty(List L){
    if(L !=NULL)
    DeleteList(L);
    L=malloc(sizeof(struct Node));
    if(L==NULL)
    FatalError("Out of memory!");
    L->Next = NULL;
    return L;
    }
    
    int IsEmpty(List L){
    return L->Next == NULL;
    }
    
     int IsLast(Position P,List L){
    return P->Next==NULL;
    }
    
    Position Find(ElementType X,List L){
      Position P;
      P=L->Next;
      while(P!=NULL && P->Element != X)
      P=P->Next;
      return P;
    }
    
    void Delete(ElementType X,List L){
    Position P,TmpCell;
    P = FindPrevious(X,L);
    if(!IsLast(P,L)){
    TmpCell = P->Next;
    P->Next = TmpCell->Next;
    free(TmpCell);
    }
    }
    
    Position FindPrevious(ElementTpye X,List L){
      Position P;
      P=L;
      while(P->Next !=NULL && P->Next->Element != X)
        P= P->Next;
      return P;
    }
    
    void Insert(ElementType X,List L,Position P){
      Position TmpCell;
      TmpCell = malloc(sizeof(struct Node));
      if(TmpCell == NULL)
        FatalError("Out of space!!!");
      TmpCell->Element = X;
     TmpCell->Next = P->Next;
      P->Next = TmpCell;
    }
    

    if 0

    void DeleteList(List L)
    {
    Position P;
    P = L->Next;
    L->Next=NULL;
    while(P!=NULL)
    {
    free(P);
    P= P->Next;
    }
    }

    endif

    void DeleteLIst(List L)
    {
      Position P,Tmp;
      P=L->Next;
      L-Next =NULL;
      while(P!=NULL){
        Tmp = P->Next;
        free(P);
        P=Tmp;
      }
    }
    
    Position Header(List L){
      return L;
    }
    
    Position First(List L){
      return L->Next;
    }
    
    Position Advance(Position P){
      return P->Next;
    }
    
    ElementType Retrieve(Position P)
    {  
      return P->Element;
    }
    

    fatal.h

    #include<stdio.h>
    #include<stdlib.h>
    #define Error(Str) FatalError(Str)
    #define FatalError(Str) fprintf(stderr,"%s\n",Str),exit(1)
    

    相关文章

      网友评论

          本文标题:How to write list in c

          本文链接:https://www.haomeiwen.com/subject/auvfkftx.html