zoukankan      html  css  js  c++  java
  • 线性表——顺序表现和实现

    1.向当前线性表插入数据

    Status ListInsert_Sq(SqList &L,int i,ElemType e)
    {
    if(i<1||i>L.length+1)
    return ERROR;         //i不合格
    if(L.length>=L.listsize)
    {
    newbase=(ElemType*)realloc(L.elem,
    (L.listsize+LISTINCREMENT)*sizeof(ElemType));  //重新分配存储空间
    if(!newbase)
    exit(OVERFLOW);     //如果分配空间失败
    L.elem=newbase;    //新基址
    L.listsize+=LISTINCREMENT;  //增加存储容量
    }
    q=&(L.elem[i-1]);      //q为插入位置
    for(p=&(L.elem[L.length-1]);p>=q;--p)
    *(p+1)=*p;    //插入位置元素之后的元素全部后移
    *q=e;            //插入元素
    ++L>length;  //表长加1
    return OK;
    }    

    2.下面是删除线性表中的元素的操作

    Status ListDelete_Sq(SqList &L,int i,ElemType &e)
    {
        if((i<1)||(i>L.length))
            return ERROR;        //i值不合格
        p=&(L.elem[i-1]);        //要删除的地址
        e=*p;                    //要删除元素赋值给e
        q=L.elem+L.length-1;    //表尾元素位置
        for(++p;p<=q;++p)
            *(p-1)=*p;            //被删除元素之后的元素往前移
        --L.length;                //表长减1
        return OK;
    }

     3.线性表中的元素合并操作

    void MergeList_Sq(SqList La,SqList Lb,SqList &Lc)
    {
        pa=La.elem;
        pb=Lb.elem;
        Lc.listsize=Lc.length=La.length+Lb.length;
        pc=Lc.elem=(ElemType*)malloc(Lc.listsize*sizeof(ElemType));
        if(!Lc.elem)
            exit(OVERFLOW);        //如果分配内存失败
        pa_last=La.elem+La.length-1;
        pb_last=Lb.elem+Lb.length-1;
        while(pa<=pa_last&&pb<=pb_last)        //合并
        {    
            if(*pa<=*pb)    *pc++=*pa++;
            else    *pc++=*pb++;    
        }
        while(pa<=pa_last)
            *pc++=*pa++;        //插入La的剩余元素
        while(Pb<=pb_last)        
            *pc++=*pb++;        //插入Lb的剩余元素
    }
  • 相关阅读:
    Balanced Binary Tree
    Minimum Depth of Binary Tree
    Path Sum
    Flatten Binary Tree to Linked List
    Distinct Subsequences
    Chp3: Stacks and Queue
    Chp2: Linked List
    Populating Next Right Pointers in Each Node
    Valid Palindrome
    Binary Tree Maximum Path Sum
  • 原文地址:https://www.cnblogs.com/droidxin/p/3617919.html
Copyright © 2011-2022 走看看