题目:
给定两个有序链表的头指针 head1 和 head2,打印两个链表的公共部分。
左程云 代码 c++ 实现:
#include <iostream>
using namespace std;
struct node{
int value;
node *next;
};
void add_node(node **head, int value) {
node *new_node = new node();
new_node -> value = value;
new_node -> next = NULL;
node *p_node = new node();
p_node = *head;
if(*head == NULL)
*head = new_node;
else {
while(p_node -> next != NULL) {
p_node = p_node -> next;
}
p_node -> next = new_node;
}
}
void printcompart(node *head1, node* head2){
while (head1 != NULL && head2 != NULL){
if (head1->value > head2->value){
head2 = head2->next;
}
else if (head1->value < head2->value){
head1 = head1->next;
}
else{
cout << head1->value << " ";
head1 = head1->next;
head2 = head2->next;
}
}
cout << endl;
}
void display(node* head){
node * p = head;
while (p != NULL){
cout << p-> value << " ";
p = p->next;
}
}
int main(){
node* node1 = NULL;
node* node2 = NULL;
add_node(&node1, 2);
add_node(&node1, 6);
add_node(&node1, 8);
display(node1);
cout << endl;
add_node(&node2, 2);
add_node(&node2, 3);
display(node2);
cout << endl;
cout << "the common part is :";
printcompart(node1, node2);
}