#include "stdafx.h"
#define _CRT_SECURE_NO_WARNINGS
#include<stdlib.h>
#include<stdio.h>
#include<malloc.h>
typedef struct Node {
struct Node* next;
int data;
};
typedef struct Node *PtrToNode;
typedef PtrToNode List;
typedef PtrToNode Position;
typedef int ElementType;
List CreateLink()
{
//相当于头节点
Node *head = (Node*)malloc(sizeof(Node));
head->next = NULL;
return head;
}
Node* findLinkLast(Node* list) {
while (list->next) {
list = list->next;
}
return list;
}
void insert(Node* list, int a) {
Node *p = (Node*)malloc(sizeof(Node));
p->data = a;
p->next = NULL;
Node* q = findLinkLast(list);
q->next = p;
}
Position Advance(Position P)
{
return P->next;
}
ElementType
Retrieve(Position P)
{
return P->data;
}
//可能性
//1、要么两者相等取其一
//2、要么两者不相等取两者
static void CommonDataForAll(List head1, List head2)
{
Position posOne = Advance(head1);
Position posTwo = Advance(head2);
while (1)
{
if (posOne->data == posTwo->data)
{
printf("head->element is %d\n", posTwo->data);
}
else
{
printf("head->element is %d\n", posOne->data);
printf("head->element is %d\n", posTwo->data);
}
posOne = posOne->next;
posTwo = posTwo->next;
if (posOne == NULL) goto END;
if (posTwo == NULL) goto END;
}
END:
while (posOne != NULL)
{
printf("head->element is %d\n", posOne->data);
posOne = posOne->next;
}
while (posTwo != NULL)
{
printf("head->element is %d\n", posTwo->data);
posTwo = posTwo->next;
}
printf("end");
return;
}
int main()
{
List L = CreateLink();
List P = CreateLink();
insert(L, 1);
insert(L, 2);
insert(L, 3);
insert(L, 4);
insert(L, 5);
insert(L, 6);
insert(L, 10);
insert(P, 1);
insert(P, 2);
insert(P, 3);
insert(P, 4);
insert(P, 5);
insert(P, 6);
insert(P, 7);
insert(P, 8);
CommonDataForAll(L, P);
system("pause");
return 0;
}
求两个有序链表的并集
最新推荐文章于 2024-03-24 11:34:26 发布