文档介绍:(X<=Y)之间的所有元素,要求以较高的效率实现,要求算法的空间复杂度为O(1)voiddelete(SqList&L,ElemTypex,ElemTypey){inti=0,k=0;while(i<){ if([i]>=x&&[i]<=y) k++;//记录被删记录的个数 [i-k]=[i];//前移k个位置 i++;}=-k;}2设一个有序表L,含有2n个整数,其中n个位负数,n个为正数,(1),时间复杂度为O(n)voidmove(SqList&L){inti=0,j=-1;inttemp;while(i<j)//使得正数都在前半部分,负数都在后半部分{ while(i<j&&[i]>0)i++; while(i<j&&[j]<0)j--; if(i<j)//[i](负数)[j](正数) { temp=[i]; [i]=[j]; [j]=temp; }}i=1;while(i<)//通过交换使得正负数相间{ j=-2; temp=[i]; [i]=[j];[j]=temp; i=i+2; j=j-2;}}=值递增有序排列的线性表A和B分别表示两个集合(同一元素值各不相同),要求分别设计求A和B交并差集的算法,要求结果线形表中的元素依值递增有序排列,:voidintersection(SqListA,SqListB,SqList&C){inti=0,j=0,k=0;while(i<&&j<){ if([i]<[j])i++; elseif([i]>[j])j++; else{[k]=[i];k++;i++;j++;}//共同的元素}=k;}并集:voidUnion(SqListA,SqListB,SqList&C){inti=0,j=0,k=0;while(i<&&j<){ if([i]<[j]){[k]=[i];k++;i++;} elseif([i]>[j]){[k]=[j];k++;j++;} else{[k]=[i];k++;i++;j++;}//共同的元素只放一个}while(i<){[k]=[i];k++;i++}while(j<){[k]=[j];k++;j++}=k;}差集:voiddiffernce(SqListA,SqListB,SqList&C){inti=0,j=0,k=0;while(i<&&j<){ if([i]<[j]){[k]=[i];k++;i++;} elseif([i]>[j]){j++;} else{i++;j++;}//共同的元素只放一个}while(i<){[k]=[i];k++;i++}=k;}:描述以下三个概念的区别:头结点,头指针,首元结点(第一个元素结点).在单链表中设置头结点的作用是什么?答:首元结点是指链表中存储线性表中第一个数据元素a1的结点。为了操作方便,通常在链表的首元结点之前附设一个结点,称为头结点,该结点的数据域中不存储线性表的数据元素,其作用是为了对链表进行操作时,。头指针是指向链表中第一个结点(或为头结点或为首元结点)的指针。若链表中附设头结点,则不管线性表是否为空表,头指针均不为空。否则表示空表的链表的头指针为空。。是否设置头结点,是不同的存储结构表示同一逻辑结构的问题。头结点headàdatalink头指针首元结点简而言之,头指针是指向链表中第一个结点(或为头结点或为首元结点)的指针;头结点是在链表的首元结点之前附设的一