您的位置:首页 > 编程语言 > C语言/C++

求两个已排序单链表中相同的数据(C语言)

2016-04-14 20:07 561 查看
PSListNode ByeNode(DataType data)
{
PSListNode pNewNode = (PSListNode)malloc(sizeof(struct SListNode));
if (NULL != pNewNode)
{
pNewNode->data = data;
//注意使开辟的新节点的指向为空
pNewNode->pNextNode = NULL;
}
return pNewNode;
}

PSListNode UnionSet(PSListNode pL1, PSListNode pL2)
{
PSListNode PSList1 = pL1;
PSListNode PSList2 = pL2;
PSListNode pNewHead = NULL;
PSListNode pNode = NULL;
//每次比较两个链表头指针指向的数据是否相等,不相等,就让数据小的头指针后移,相等,则把该数据保存起来,
//两个头指针同时后移,直到其中一个指向空为止
while ((NULL == PSList1) || (NULL == PSList2))
{
if (PSList1->data > PSList2->data)
{
PSList2 = PSList2->pNextNode;
}
else if (PSList1->data < PSList2->data)
{
PSList1 = PSList1->pNextNode;
}
//用一个新的链表来保存两个链表中相同的数据
else
{
if (pNewHead == NULL)
{
pNewHead = ByeNode(PSList1->data);
pNode = pNewHead;
PSList1 = PSList1->pNextNode;
PSList2 = PSList2->pNextNode;
}
else
{
pNode = pNode->pNextNode;
pNode = ByeNode(PSList1->data);
PSList1 = PSList1->pNextNode;
PSList2 = PSList2->pNextNode;
}
}
}
return pNewHead;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: