目录
删除算法中的循环条件(pre->nex!!=NULL&&k
要利用现有的表LA和LB中的结点空间来建立新表LC,可通过更改结点的next域来重建新的元素之间的线性关系。为保证新表仍然递增有序,可采用尾插法建立单链表,只是新建表中的结点不用malloc,仅需从表LA和LB中选择合适的点插入新表LC即可。
- LinkList MergeLinkList( LinkList LA,LinkList LB)
- /*将递增有序的单链表LA和LB合并成一个递增有序的单链表LC*/
- {
- Node *pa,*pb;
- LinkList LC;
- /*将LC初始置空表。pa和pb分别指向两个单链表LA和LB中的第一个结点,r初值为LC且始终指向LC的表尾*/
- pa=LA->next;
- pb=LB->next ;
- LC=LA;
- LC->next=NULL;r=LC;
- /*当两个表均未处理完时,比较选择将较小值结点插入新表LC*/
- while(pa!= NULL&&pb!=NULL)
- { if( pa->data<=pb->data)
- {r->next=pa;r=pa;pa=pa->next;}
- else
- {r->next=pb;r=pb;pb= pb->next;}
- }
- if(pa)/*若表LA未完,将表LA中后续元素链到新表LC表尾*/
- r->next= pa;
- else /*否则将表LB中后续元素链到新表LC表尾*/
- r->next= pb;
- free( LB);
- return(LC);
- } /* MergeLinkList * /