数据库

位置:IT落伍者 >> 数据库 >> 浏览文章

有两个双向循环链表A,B,知道其头指针为:pHeadA,pHeadB,请写一函数将两链表中data


发布日期:2023年07月20日
 
有两个双向循环链表A,B,知道其头指针为:pHeadA,pHeadB,请写一函数将两链表中data

有双向循环链表结点定义为
struct node
{ int data;
struct node *front*next;
};
有两个双向循环链表AB知道其头指针为pHeadApHeadB请写一函数将两链表中data值相同的结点删除
BOOL DeteleNode(Node *pHeader DataType Value)
{
if (pHeader == NULL) return;
BOOL bRet = FALSE;
Node *pNode = pHead;
while (pNode != NULL)
{
if (pNode>data == Value)
{
if (pNode>front == NULL)
{
pHeader = pNode>next;
pHeader>front = NULL;
}
else
{
if (pNode>next != NULL)
{
pNode>next>front = pNode>front;
}
pNode>front>next = pNode>next;
}
Node *pNextNode = pNode>next;
delete pNode;
pNode = pNextNode;
bRet = TRUE;
//不要break或return 删除所有
}
else
{
pNode = pNode>next;
}
}
return bRet;
}
void DE(Node *pHeadA Node *pHeadB)
{
if (pHeadA == NULL || pHeadB == NULL)
{
return;
}
Node *pNode = pHeadA;
while (pNode != NULL)
{
if (DeteleNode(pHeadB pNode>data))
{
if (pNode>front == NULL)
{
pHeadA = pNode>next;
pHeadA>front = NULL;
}
else
{
pNode>front>next = pNode>next;
if (pNode>next != NULL)
{
pNode>next>front = pNode>front;
}
}
Node *pNextNode = pNode>next;
delete pNode;
pNode = pNextNode;
}
else
{
pNode = pNode>next;
}
}
}

上一篇:亚马逊推出云服务NoSQL数据库

下一篇:mysql常见问题解决第1/2页