不帶頭節點的循環鏈表的入隊和出對操作

數據類型如下:

typedef struct LNode{

    ElemType data;

    struct LNode *next;

}*LinkList;


//入隊操作                                  //出隊操作

Status enQueue(LinkList & L,ElemType e)     Status DeQueue(LinkList &L,ElemType &e)     

{                                           {

    s = (LinkList)malloc(sizeof(LNode));        if(!L)    return ERROR;  //如果鏈表空,返回

    if(!s) return ERROR;                        front = L->next;    //其中L設爲尾指針

    s->data = e;                                e = front->data;    //front爲頭指針

    if(!L)     //L爲尾指針                      if(front = L)  //只有一個結點

    {                                           {

        L = s;                                       L = NULL;     //鏈表致爲空

        L->next = L;                             }else{       

    }else                                            L->next = front->next;  

    {                                            }

        s->next = L->next;                       free(front);

        L->next = s;                             return OK;

    }                                        }

    return OK;

}

爲了方便看入隊和出對的對比,把兩個操作寫在了並列的位置。L爲鏈表的指針同時也是隊列的尾指針,可以方便地進行入隊和出對的操作。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章