首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

读《数据结构(c语言版)》(清华严蔚敏版)的有关问题(P24算法2.5)

2012-02-12 
读《数据结构(c语言版)》(清华严蔚敏版)的问题(P24算法2.5)第24页算法2.5StatusListDelete_Sq(SqList&L,inti

读《数据结构(c语言版)》(清华严蔚敏版)的问题(P24算法2.5)
第24页算法2.5
Status   ListDelete_Sq(SqList   &L,int   i,ElemType   &e){
        //   在顺序线性表L中删除第i个元素,并用e返回其值
        //   i的合法值为1≤i≤ListLength_Sq(L)
        if((i <1)   ||   (i> L.length))   return   ERROR;     //   i值不合法
        p=&(L.elem[i-1]);       //   p为被删除元素的位置
        e=*p;                 //   被删除元素的值赋给e
        q=L.elem+L.length-1;   //表尾元素的位置
        for(++p;p <=q;++p)   *(p-1)=*p;   //   被删除元素之后的元素左移(问题出在这句)
        --L.length;           //   表长减1
        return   OK;  
}//   ListDelete_Sq

为什么不用for(;p <q;++p)   *p=*(p+1);//比原来少了一个++p,用+运算代替了-运算
我觉得这样效率会高一点点(既然讨论算法,当然是越高越好).

[解决办法]
呵呵 干什么啊 :)
[解决办法]

节省了一条机器指令?
算法只考虑数量级上的区别,连O(2n)=O(n),一条机器指令更不在考虑范围内
[解决办法]
基本上没什么差别,循环次数没有减少
[解决办法]
都没问题

热点排行