已知线性表的存储结构为顺序表,阅读下列算法,并回答问题:
(1)设线性表L=(21,-7,-8,19,0,-11,34,30,-10),写出执行f30(&L)后的L状态;
(2)简述算法f30的功能。
void f30(SeqList*L){
int i,j;
for(i=j=0;i<L—>length;i++)
if(L—>data[i]>=0){
if(i!=j)L—>data[j]=L—>data[i];
j++;
}
L—>length=j;
}
阅读下列算法,并回答问题:
(1)Q、Q1和Q2都是队列结构,设队列Q=(1,0,-5,2,-4,-6,9),其中1为队头元素,写出执行f31(&Q,&Q1,&Q2)之后队列Q、Q1和Q2的状态;
(2)简述算法f31的功能。
(注:InitQueue、EnQueue、DeQueue和QueueEmpty分别是队列初始化、入队、出队和判队空的操作)
void f31(Queue*Q,Queue*Q1,Queue*Q2){
int e;
InitQueue(Q1);
InitQueue(Q2);
while(!QueueEmpty(Q)){
e=DeQueue(Q);
if(e>=0)EnQueue(Q1,e);
else EnQueue(Q2,e);
}
}