首页 > 其他 > 详细

线性表——顺序表现和实现

时间:2014-03-22 20:27:22      阅读:499      评论:0      收藏:0      [点我收藏+]

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

bubuko.com,布布扣
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;
}    
bubuko.com,布布扣

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

bubuko.com,布布扣
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;
}
bubuko.com,布布扣

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

bubuko.com,布布扣
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的剩余元素
}
bubuko.com,布布扣

线性表——顺序表现和实现,布布扣,bubuko.com

线性表——顺序表现和实现

原文:http://www.cnblogs.com/droidxin/p/3617919.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!