首页 > 代码库 > 算法设计分析(44页)
算法设计分析(44页)
分别以两个(带头结点的)循环有序链表表示集合A和B,完成这两个集合并集的操作:
代码如下:
#include<stdio.h>typedef struct LNode { int data ; struct LNode *next ;}LNode , *LinkList ;void union_OL(LinkList &La , LinkList &Lb ) { LinkList pa = La->next->next ; LinkList pb = Lb->next->next ; LinkList rc = La->next ; while(pa != La->next && pb !=Lb->next) { if((pa->data) < (pb->data)) { rc->next = pa ; rc = pa ; pa = pa->next ; } else if((pa->data) > (pb->data)) { rc->next = pb ; rc = pb ; pb = pb->next ; } else { rc->next = pa ; rc = pa ; pa = pa->next ; pb = pb->next ; } } if(pb==(Lb->next)) rc->next = pa ; else{ Lb->next = La->next ; La->next = pb ; La = Lb ; } //printf("%d\n",La->next->next->data) ; LinkList hrc = La->next->next ; while(hrc != La->next) { printf("%d ",hrc->data) ; hrc =hrc->next ; } printf("\n") ;}int main() { LinkList La , Lb ; int a[] = {4,7,10,21,40,56} ; int b[] = {7,9,21,68} ; int i ; LinkList ha = new LNode ; La = ha ; for(i = 0 ; i < 6 ; i++) { LinkList s = new LNode ; s->data =http://www.mamicode.com/ a[i] ; La->next = s ; La = s ; } La->next = ha ; LinkList hb = new LNode ; Lb = hb ; for(i = 0 ; i < 4 ; i++) { LinkList s = new LNode ; s->data =http://www.mamicode.com/ b[i] ; Lb->next = s ; Lb = s ; } Lb->next = hb ; /*LinkList hrc = Lb->next->next ; printf("%d\n",hrc->data) ; while(hrc != Lb->next) { printf("%d ",hrc->data) ; hrc = hrc->next ; }*/ //inkList rc = La->next ; union_OL(La,Lb) ; return 0 ;}
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。