|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
线性表的删除操作时使长度为n的线性表
; ^3 z/ k; A) F* {$ ~; t(a1,…,ai-1,ai,…,an)/ A% A! [ Y* Z; W) [' u
变成长度为n-1的线性表9 g) v) c/ V$ i0 c
(a1,…,ai-1,ai+1,…,an)
6 v4 M2 \& R9 ]: u. V9 p数据元素ai-1、ai和ai+1之间的逻辑关系发生了变化,为了在存储结构上反映这个变化,同样需要移动元素。为了删除第4个数据元素,必须第5个至第8个元素都一次往前移动一个位置。
/ q# T! `$ O) X$ ^& F" K) P) V一般情况下,删除第i(1≤i≤n)个元素时需要将从i+1至第n个元素一次向前移动一个位置 S$ v* N; e3 U2 e0 `8 z
Status ListInsert_Sq(SqList &L,inti,ElemType){; Q2 z( `2 t4 p: t e2 X9 R
//在顺序线性表L中第i个位置之前插入新的元素e,
$ V9 C" _. b7 _5 f; I2 i- z//i的合法值为1≤i≤ListLength——Sq(L)
% E( X( F4 T9 Y, _5 [/ Oif((i<1)||(i>L.length))returnERROR;//i值不合法; k$ `3 Z U6 p# d% E! D X
P=&(L.elem[i-1];) //p为被删除元素的位置7 B% p* Z( |9 e
e=*please //被删除元素的值赋给e3 s) }5 p% g4 q
q=L.elem+L.length-1; //表尾元素的位置
) |9 r& m: v; Gfor(++p;p<=q;++P)*(p-1)=*p-1 //被删除的元素之后的元素左移
7 e& X& z1 v/ h; N% [$ d--L.length; //表长减1
! C$ i1 J) k6 _/ j, c4 Freturn OK;
\* ~9 z$ f$ G% f3 Z7 A( F- \}//ListInsert_Sq |
|