线性表

作者: 净土_0342 | 来源:发表于2018-05-25 13:13 被阅读0次

    [TOC]

    带头结点的单向链表

    typedef struct LNode{
        ElemYype data;
        struct LNode *next;
    }LNode,*LinkList;
    

    获取元素

    GetElem_l(LinkList L,int i,ELemtype &e)
    //带头结点,返回第I个元素,并赋值给e,成功返回1,失败返回-1
    {
        p = L-next;j=1;
        while(p&&j<i){
            p = p->next;j++;
        }
        if(!p||j>i) return -1;
        e = p->data;
        return 1;
    }
    
    

    指定位置插入一个结点

    int ListInsert_l(LinkList &L,int i,Elemtype e)
    {
        p = L;j=0;
        while(p&&j<i-1)
        {
            p = p->next;
            j++;
        }//寻找第i-1个结点
        if(!p||j>i-1) return -1;
        s = (Linklist)malloc(sizeof(LNode));
        s->data = e;s->next = p->next;
        p->next =s;
        return 1;
    }
    

    指定删除一个结点

    int ListDelete_l(LinkList &l,int i,ElemType &e)
    { //提取删除的第一个元素在e中,成功返回1,失败-1
        p =L;i=0;
        while(p&&j<i-1)
        {
            p=p->next;
            j++;
        }
        if(!(p->next)||j>i-1) return -1;
        q = p->next;p->next = q->next;
        e = q->data;free(q);
        return 1;
    } //ListDelete_l
    

    循环双向链表

    定义

    typedef struct DulNode{
        ElemType data;
        struct DulNode *prior;
        struct DulNode *next;
    }DuLNode,*DulLinkList;
    

    指定位置插入结点

    int ListInsert_dul(DuLinkList &L,int i,ElemType e)
    {//成功返回1,失败-1
        int j=0;
        DuLinkList p = L;
        while(p&&j<i){
            p= p->next;j++;
        }
        if(!p ||j>i)
            return -1;
        if(!(s=(DuLinkList)malloc(sizeof(DuLNode)))) return -1; //申请内存失败
        s->data = e;
        s->prior = p->prior;p->prior->next = s;
        s->next = p; p->prior =s;
        return 1;
    }
    

    指定位置删除结点

    int ListDelete_DuL(DuLinkList &L,int i,ElemType &e)
    {
        if(!(p=GetElemP_DuL(L,i)))
            return -1;
        e = p->data;
        p->prior->next = p->next; 
        p->next->prior = p->prior; // 这两句话应该是可以调换的,因为p一直都存在
        free(p);
        return 1;
    }
    

    中间的结点变量很重要应该要首先赋值.

    相关文章

      网友评论

          本文标题:线性表

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