n求表的长度 int Length Seqlist *pl) return pL>last+l;
◼ 求表的长度 int Length ( SeqList *pL ) { return pL->last+1; }
插入 234567 25345716480963 插入x50 234 2534575016480963 顺序表插入时,平均数据移动次数AMN在各表项 插入概率相等时 AMN ∑(n-i)=—(n+…+1+0) n+1 +1) (n+1) 2 Average Move Number
▪ 插入 2 2 ( 1) ( 1) 1 ( 1 0) 0 1 1 ( ) 1 1 = n n n n n n i n n i n = + + = + + + = + − = + AMN 25 34 57 16 48 09 63 0 1 2 3 4 5 6 7 插入 x 50 25 34 57 50 16 48 09 63 0 1 2 3 4 5 6 7 50 i 顺序表插入时,平均数据移动次数AMN在各表项 插入概率相等时 Average Move Number
顺序表的插入 int InsIst( Seqlist *pL, elemType x, int i) 在表中第i个位置插入新元素x if (i<0i> pL->last+l pL->last=- MAXSIZE-D) return Ug /插入不成功 else for(intj=pL>last+1;j>i;j--) pL>elem= pl>elemij-l pL>elem =X; pL>last++; return1;/插入成功 注意:此算法中假设插入位置i从0到pL->last+1为合法
▪ 顺序表的插入 int InsList ( SeqList *pL, ElemType x, int i ) { //在表中第 i 个位置插入新元素 x if (i < 0 || i > pL->last+1 || pL->last == MAXSIZE-1) return 0; //插入不成功 else { for ( int j = pL->last+1; j > i; j-- ) pL->elem[j] = pL->elem[j -1]; pL->elem [i] = x; pL->last++; return 1; //插入成功 } } 注意:此算法中假设插入位置i从0到pL->last+1为合法
删除 2534575016480963 删除x/ 0123 4″5″6 7 25345750480963 顺序表删除平均数据移动次数AMN在各表项 删除概率相等时 AMN l(-1)nn-1 2
▪ 删除 − = − = − − − = 1 0 2 1 2 1 ( 1) ( 1) 1 = n i n n n n n i n AMN 25 34 57 50 16 48 09 63 16 删除 x 25 34 57 50 48 09 63 0 1 2 3 4 5 6 7 顺序表删除平均数据移动次数AMN在各表项 删除概率相等时
顺序表的删除 int Delist( seqlist *pl, int i, Elem Type*px 在表中删除已有的第个元素 if((i<1)‖(i>pL->last+1)/判断位置是否正确 return 0; for(intj=i;j<=pL->last; j++) pL->elem[j-1=pL->elemjl; pL->last return 1 F功删除 注意:此算法中假设删除位置从1到pL->last+1为合法
▪ 顺序表的删除 int DelList ( SeqList *pL, int i, ElemType *px ) { //在表中删除已有的第i个元素 if( (i<1) || (i>pL->last+1) ) //判断位置是否正确 return 0; for ( int j = i; j <= pL->last; j++ ) pL->elem[j-1] = pL->elem[j]; pL->last--; return 1; //成功删除 } 注意:此算法中假设删除位置i从1到pL->last+1为合法