線性錶帶頭結點的單鏈表的鏈式表示和實現

來源:互聯網
上載者:User

標籤:c   資料結構   考研   電腦專業   

線性表的單鏈表格儲存體結構

struct LNode{    ElemType data;    LNode *next;};typedef LNode *LinkList;

帶有頭結點的單鏈表的12個基本操作

void InitList(LinkList &L){    L = (LinkList)malloc(sizeof(LNode));    if (!L)exit(OVERFLOW);    L->next = NULL;}void DestroyList(LinkList &L){    LinkList q;    while (L){        q = L->next;        free(L);        L = q->next;    }}void ClearList(LinkList &L){    LinkList q = L->next;    L->next = NULL;    DestroyList(q);}Status ListEmpty(LinkList L){    if (L->next == NULL)return FALSE;    else return TRUE;}int ListLength(LinkList L){    LinkList p = L->next;    int i = 0;    while (p)    {        i++;        p = p->next;    }    return i;}Status GetElem(LinkList L, int i, ElemType &e){    int j = 1;    LinkList p = L->next;    while (p &&j <i)    {        j++;        p = p->next;    }    if (!p || j>i)return ERROR;    e = p->data;    return OK;}int LocateElem(LinkList L, ElemType e, Status(*compare)(ElemType, ElemType)){    int i = 1;    LinkList p = L->next;    while (p){        i++;        if (compare(p->data, e))            return i;        p = p->next;    }    return 0;}Status PriorElem(LinkList L, ElemType cur_e, ElemType &pre_e){    int i = 2;    LinkList q, p = L->next;    while (p->next){        q = p->next;        if (q->data == cur_e){            pre_e = p->data;            return OK;        }        p = q;    }}Status NextElem(LinkList L, ElemType cur_e, ElemType &next_e){    LinkList p = L->next;    while (p->next){        if (p->data == cur_e){            next_e = p->next->data;            return OK;        }        p = p->next;    }    return ERROR;}Status ListInsert(LinkList L, int i, ElemType e){    int j = 0;    LinkList s, p = L;    while (p && j < i-1)    {        j++;        p = p->next;    }    if (!p || j > i - 1)        return ERROR;    s = (LinkList)malloc(sizeof(LNode));    s->data = e;    s->next = p->next;    p->next = s;    return OK;}Status ListDelete(LinkList L, int i, ElemType &e){    int j = 0;    LinkList q, p = L;    while (p && j < i - 1)    {        j++;        p = p->next;    }    if (!p || j > i - 1)        return ERROR;    q = p->next;    e = q->data;    p->next = q->next;    free(q);     return OK;}void ListTraverse(LinkList L, void(*visit)(ElemType&)){    LinkList p = L->next;    while (p)    {        visit(p->data);        p = p->next;    }    printf("\n");}

著作權聲明:本文為博主原創文章,未經博主允許不得轉載。

線性錶帶頭結點的單鏈表的鏈式表示和實現

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.