bool List::ListDelete(int i,int *e){ if(i<0||i>=m_iLength){ return false; } *e = m_pList[i]; for(int k=i+1;k<m_iLength;k++){ m_pList[k-1] = m_pList[k]; } m_iLength--; return true; } 在删除函数ListDelete()中代码*e = m_pList[i];有什么作用,没有看到用到*e啊。为什么要把m_pList[i]中的内容拷贝出来呢?
严格来讲是没有用的,之所以这样写是为了在测试的时候,看一下我们删除的对不对,通过*e就可以看出来
老师是为了让我们对过程更加清晰,并且与前面的插入对应,先完成取出来的动作。但是实际上可以不需要*e,因为你本来就是要把它删除,所以直接将前面元素左移,直接覆盖也是可以的。
你把形参里面的*e去掉,再把
*e = m_pList[i];去掉,对删除函数没有本质的影响