学习了线性表之后发现删除的方式有多种多样,同时出题的方式也千奇百怪。
首先是最简单的删除:把要删除元素之后的元素全部往前挪,将欲删除的覆盖掉。
但是这种删除方式的局限性太大了,首先就是时间复杂度,这个算法的时间复杂度为O(n^2).
bool Delete( List L, Position P ) { int i; if(P>=L->Last||P<0) { printf("POSITION %d EMPTY",P); return false; } L->Last--;//这里的Last是指长度了 for(i=P;i<L->Last;i++) L->Data[i]=L->Data[i+1]; return true; }