题目:给定两个有序链表的头指针head1和head2,打印两个链表的公共部分。
1 //链表结点的定义 2 typedef struct Node 3 { 4 int value; 5 struct Node *next; 6 }Node, *LNode; 7 8 //打印有序链表公共部分的函数 9 void printCommonPart(LNode head1, LNode head2) 10 { 11 cout << "Common Part: "; 12 while (head1 != NULL && head2 != NULL) 13 { 14 if (head1->value < head2->value) //如果链表1的当前元素比链表2的小,那么链表1的指针后移一位 15 { 16 head1 = head1->next; 17 } 18 else if (head1->value > head2->value) //如果链表1的当前元素比链表2的大,则链表2的指针后移一位 19 { 20 head2 = head2->next; 21 } 22 else //如果两个元素相等,则打印,两个指针同时后移一位 23 { 24 cout << head1->value << " "; 25 head1 = head1->next; 26 head2 = head2->next; 27 } 28 } 29 cout << endl; 30 }