最近给一个小同学上C语言的课,就顺便自己再把基础知识复习一下,争取每天都写一点。
Stautus GetElem (sqlist L, int i, Stautus *e) { if (L.length ==0||i<1||i>L.length ) return ERROR; *e=L.data[i-1]; return OK; } ///插入操作; Stautus ListInsert(sqlist* L,int i ,Stautus e)//i表示要删除的位置 { if(L->length ==MAXSIZE) { return ERROR; } if(i>(*L).length+1||i<1) { return ERROR; } if(i<=L->length ) { for(int k= L->length -1;k>=i-1;k--) { L->data [k+1]=L->data[k];} } L->data [i-1]=e; L->length ++; return OK; } Stautus ListDelete (sqlist * L,int i,int *e) { if (L->length ==0) return ERROR; if(i>L->length ||i<1) return ERROR; *e=L->data[i-1]; if(i<L->length -1) { for(int k=i-1;k<L->length ;k++) L->data[k]=L->data[k+1]; } L->length --; return OK; }
注意在插入和删除操作中,最后一个元素的处理,他的删除或者插入不需要移动其他的元素。最好情况是在末尾,时间复杂读是O(1)最坏情况是O(n),即在最前端,因此根据等概率计算,平均复杂度为O (n);