超详解析,手打不易,转载注明出处,点赞收藏,多谢支持
#include<stdio.h>
#include<stdlib.h>
typedef struct Node *PtrToNode;
struct Node {
int Data; /* 存储结点数据 */
PtrToNode Next; /* 指向下一个结点的指针 */
};
typedef PtrToNode List; /* 定义单链表类型 */
/*初始化链表*/
List initLine(){
List L = (List)malloc(sizeof(struct Node));
L->Next = NULL;
return L;
}
/*插入*/
PtrToNode insertNode(PtrToNode pre,int data){
PtrToNode q = (PtrToNode)malloc(sizeof(struct Node));
q->Data = data;
q->Next = NULL;
pre->Next = q;
return q;
}
/*对比*/
void compare(List p1,List p2){
if(p1==NULL && p2==NULL){
printf("NULL");
return;
}
while(p1!=NULL && p2!=NULL){
if(p1->Data <= p2->Data){
printf("%d ",p1->Data);
p1 = p1->Next;
}else{
printf("%d ",p2->Data);
p2 = p2->Next;
}
}
while(p1){
printf(p1->Next?"%d ":"%d",p1->Data);
p1 = p1->Next;
}
while(p2){
printf(p2->Next?"%d ":"%d",p2->Data);
p2 = p2->Next;
}
}
int main(){
List L1 = initLine(),L2 = initLine();
PtrToNode p1 = L1,p2 = L2;
int i = 0;
scanf("%d",&i);
while(i != -1){
p1 = insertNode(p1,i);
scanf("%d",&i);
}
scanf("%d",&i);
while(i != -1){
p2 = insertNode(p2,i);
scanf("%d",&i);
}
compare(L1->Next,L2->Next);
}