欢迎来到天天文库
浏览记录
ID:14251447
大小:52.50 KB
页数:14页
时间:2018-07-27
《k)删除线性表a中第i个元素起的k个元素》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、第二章线性表2.10StatusDeleteK(SqList&a,inti,intk)//删除线性表a中第i个元素起的k个元素{ if(i<1
2、
3、k<0
4、
5、i+k-1>a.length)returnINFEASIBLE; for(count=1;i+count-1<=a.length-k;count++)//注意循环结束的条件 a.elem[i+count-1]=a.elem[i+count+k-1]; a.length-=k; returnOK;}//DeleteK2.11void InsertOrderList(SqList &L,ElemTyp
6、e x) { int i=0,j; while(i=L.elem[i]) i++; for(j=L.length;j>i;j--) L.elem[j]=L.elem[j-1]; L.elem[i]=x; L.length++; }2.12intListComp(SqListA,SqListB)//比较字符表A和B,并用返回值表示结果,值为1,表示A>B;值为-1,表示A7、!=B.elem[i]) returnA.elem[i]>B.elem[i]?1:-1; if(A.length==B.length)return0; returnA.length>B.length?1:-1; //当两个字符表可以互相比较的部分完全相同时,哪个较长,哪个就较大}//ListComp2.13LNode*Locate(LinkListL,intx)//链表上的元素查找,返回指针{ for(p=l->next;p&&p->data!=x;p=p->next); returnp;}//Locate2.14intLength(Lin8、kListL)//求链表的长度{ for(k=0,p=L;p->next;p=p->next,k++); returnk;}//Length2.15voidListConcat(LinkListha,LinkListhb,LinkList&hc)//把链表hb接在ha后面形成链表hc{ hc=ha;p=ha; while(p->next)p=p->next; p->next=hb;}//ListConcat2.16见书后答案.2.17StatusInsert(LinkList&L,inti,intb)//在无头结点链表L的第i个元素之前插入元素b{ p9、=L;q=(LinkList*)malloc(sizeof(LNode)); q.data=b; if(i==1) { q.next=p;L=q;//插入在链表头部 } else { while(--i>1)p=p->next; q->next=p->next;p->next=q;//插入在第i个元素的位置 }}//Insert2.18StatusDelete(LinkList&L,inti)//在无头结点链表L中删除第i个元素{ if(i==1)L=L->next;//删除第一个元素 else { p=L; wh10、ile(--i>1)p=p->next; p->next=p->next->next;//删除第i个元素 }}//Delete2.19StatusDelete_Between(Linklist&L,intmink,intmaxk)//删除元素递增排列的链表L中值大于mink且小于maxk的所有元素{ p=L; while(p->next->data<=mink)p=p->next;//p是最后一个不大于mink的元素 if(p->next) //如果还有比mink更大的元素 { q=p->next; while(q->data11、axk)q=q->next;//q是第一个不小于maxk的元素 p->next=q; }}//Delete_Between2.20StatusDelete_Equal(Linklist&L)//删除元素递增排列的链表L中所有值相同的元素{ p=L->next;q=p->next;//p,q指向相邻两元素 while(p->next) { if(p->data!=q->data) { p=p->next;q=p->next;//当相邻两元素不相等时,p,q都向后推一步 } else { while(q-12、>data
7、!=B.elem[i]) returnA.elem[i]>B.elem[i]?1:-1; if(A.length==B.length)return0; returnA.length>B.length?1:-1; //当两个字符表可以互相比较的部分完全相同时,哪个较长,哪个就较大}//ListComp2.13LNode*Locate(LinkListL,intx)//链表上的元素查找,返回指针{ for(p=l->next;p&&p->data!=x;p=p->next); returnp;}//Locate2.14intLength(Lin
8、kListL)//求链表的长度{ for(k=0,p=L;p->next;p=p->next,k++); returnk;}//Length2.15voidListConcat(LinkListha,LinkListhb,LinkList&hc)//把链表hb接在ha后面形成链表hc{ hc=ha;p=ha; while(p->next)p=p->next; p->next=hb;}//ListConcat2.16见书后答案.2.17StatusInsert(LinkList&L,inti,intb)//在无头结点链表L的第i个元素之前插入元素b{ p
9、=L;q=(LinkList*)malloc(sizeof(LNode)); q.data=b; if(i==1) { q.next=p;L=q;//插入在链表头部 } else { while(--i>1)p=p->next; q->next=p->next;p->next=q;//插入在第i个元素的位置 }}//Insert2.18StatusDelete(LinkList&L,inti)//在无头结点链表L中删除第i个元素{ if(i==1)L=L->next;//删除第一个元素 else { p=L; wh
10、ile(--i>1)p=p->next; p->next=p->next->next;//删除第i个元素 }}//Delete2.19StatusDelete_Between(Linklist&L,intmink,intmaxk)//删除元素递增排列的链表L中值大于mink且小于maxk的所有元素{ p=L; while(p->next->data<=mink)p=p->next;//p是最后一个不大于mink的元素 if(p->next) //如果还有比mink更大的元素 { q=p->next; while(q->data11、axk)q=q->next;//q是第一个不小于maxk的元素 p->next=q; }}//Delete_Between2.20StatusDelete_Equal(Linklist&L)//删除元素递增排列的链表L中所有值相同的元素{ p=L->next;q=p->next;//p,q指向相邻两元素 while(p->next) { if(p->data!=q->data) { p=p->next;q=p->next;//当相邻两元素不相等时,p,q都向后推一步 } else { while(q-12、>data
11、axk)q=q->next;//q是第一个不小于maxk的元素 p->next=q; }}//Delete_Between2.20StatusDelete_Equal(Linklist&L)//删除元素递增排列的链表L中所有值相同的元素{ p=L->next;q=p->next;//p,q指向相邻两元素 while(p->next) { if(p->data!=q->data) { p=p->next;q=p->next;//当相邻两元素不相等时,p,q都向后推一步 } else { while(q-
12、>data
此文档下载收益归作者所有