#include <iostream>
#include<stdlib.h>
using namespace std;
#define max 100
typedef int element;
typedef struct sNode {
element data ;
struct sNode* next;
}node,*linkList ;
void initialList(node*&L ) {
L = new node;
L->next = NULL;
}
void listDecrease(node* A, node* B, node*& C) {
node* pa, * pb,*u;
pa = A->next;
pb = B->next;
while (pa != NULL && pb != NULL && pa->next != NULL && pb->next != NULL) {
if (pa->data == pb->data) {
//头插法
u = new node;
u->data = pa->data;
u->next = C->next;
C->next = u;
pa = pa->next;
pb = pb->next;
}
else if (pa->data < pb->data) {
u = new node;
u->data = pa->data;
u->next = C->next;
C->next = u;
pa = pa->next;
}
else {
u = new node;
u->data = pb->data;
u->next = C->next;
C->next = u;
pb= pb->next;
}
}
}
void listAdd(node* &L) {
node* u,*R;
R = L;
element x;
cout << "输入第一个元素(9999退出):" << endl;
cin >> x;
while (x != 9999) {
u = new node;
u->data = x;
u->next = NULL;
R->next = u;
R = u ;
cout << "输入下一个元素(9999退出):" << endl;
cin >> x;
}
}
void listPrint(node* L) {
node* p = L->next;
while (p != NULL) {
cout << p->data;
p = p->next;
}
}
int main() {
node* A, * B, * C;
initialList(A);
initialList(B);
initialList(C);
cout << "输入A中元素:" << endl;
listAdd(A);
cout << "输入B中元素:" << endl;
listAdd(B);
listDecrease(A, B, C);
listPrint(C);
return 0;
}
最后结果就是最大的两个数没有被写进C表,我知道是排除了pa->next = NULL或 pb->next = NULL的情况导致的但是要怎么处理才能把A,B表最后两个数写进去呢