顺序表的插入和删除(基于c语言)

  

插入:在下标p处插入数据x;返回是否成功(0/1)

  几个注意点:1.还能否插入数据;2.给的下标p是否是错误的以及p的范围;3.移动时的易错点(从下标大的元素开始);4.n与palist->n;elelmen[p]与palist->element[p]

  

int insertPre_seq(PSeqList palist,int p,DataType x){
    int q;    //两种退出情况 
    if (palist->n >= palist->MAXNUM){
        printf("OVERFLOW!");    //1.顺序表中存入的数据已经满了 
        return 0;
    }
    if (p<0 || p>palist->n){
        printf("WRONGNUM");     //2.下标不存在 
        return 0;
    }
    for (q=palist->n-1;q>=p;q--){    //移动时从下标大的元素开始,如果从下标小的地方开始,后续的数据全部变成原来的palist->element[p] 
        palist->element[q+1] = palist->element[q];
    }
    palist->element[p] = x;
    palist->n = palist->n + 1;
    return 1;
}

  在写程序的时候经常会不由自主地写成n而不是正确的palist->n;

  主要就是能够理解为什么要从下标大的元素开始,后面还会有从下标小的元素开始。 

 

 删除:

  

int deleteP_seq(PSeqList palist,int p){
    int q;
    if (p<0 || p>=palist->n){    
        printf("WRONGNUM!");    //一种退出情况,就是输入有问题 
        return 0;
    }
    for (q=p;q<palist->n-1;q++){
        palist->element[q] = palist->element[q+1];    //移动从下标小的元素开始 
    }
    palist->n = palist->n - 1;
    return 1;
}

 

 删除理解起来比插入简单。

书中未给出的另一种插入和删除后续给出

 

  • 添加到短语集  
    • 没有此单词集:中文(简体) -> 英语...  
    • 创建新的单词集...
  • 拷贝
相关文章