6-2顺序表操作集

List MakeEmpty()
{
    List L;
    //sizeof里边不能写List,因为List是指向结构体的指针,并不代表
    //LNode的存储长度,指针的大小是固定的,在32位操作系统中,始终是4个字节
    L = (List)malloc(sizeof(struct LNode));
    L->Last = -1;/* 保存线性表中最后一个元素的位置 ,现在是空表设为-1,后边直接+1即可*/
    return L;
}
Position Find( List L, ElementType X )
{
    int i;
    for(i = 0; i <= L->Last; i++)
    {
        if(X==L->Data[i])
        {
            return i;
        }
    }
    return ERROR;
}
bool Insert( List L, ElementType X, Position P )
{
    if(L->Last==MAXSIZE-1)//空间满
    {
        printf("FULL");
        return false;
    }
    //插入的位置范围应该为[0,L->Last+1],可以在最后一个位置的下一个位置插入
    if(P<0||P>L->Last+1)
    {
        printf("ILLEGAL POSITION");
        return false;
    }
    int i;
    /*
    看给的样例,最大长度是5,所以当插入位置为6时,说FULL,同理,当查找时,会说
    位置不合法,对于5的查找,位置是0,此时对于已经插进去的1,2,3,4,5来说,5是最后一个元素
    为0,(恰为空表时的-1 +1),再往后又没了元素。同理对于元素1,它的查找结果为4,
    (5位0,4为1,3为2,2为3,1为4.。。)
    */
    for(i = L->Last+1; i > P; i--)
    {
        //在P处插入,所以P位置之后的元素全都后移,注意下标问题
        L->Data[i] = L->Data[i-1];
    }
    L->Data[i] = X;//跳出循环,此时i=P,进行插入
    L->Last++;//又插入了一个,所以位置++
    return true;
}
bool Delete( List L, Position P )
{
    int i;
    if(P<0||P>L->Last)
    {//删除的位置非法,包含空表情况,因为那是的Last=-1
        printf("POSITION %d EMPTY",P);
        return false;
    }
    //删除第P个位置,所以P位置元素变为它的下一个,依次左移
    for(i = P; i < L->Last; i++)
    {
        L->Data[i] = L->Data[i+1];
    }
    L->Last--;//总的位置长度-1.
    return true;
}
 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值