|
2012图像所复试编程题三,
已知一个指向单向链表的某个非头非尾节点的指针(node* pCurrent). pCurrent 指向的地址中仅保存2个指针, 一个是指向下一个节点的Next指针(pCurrent-> Next), 另一个是指向节点本身数据的Data指针(pCurrent-> Data). 编写一个C/C++函数, 实现以下功能:
(1)(2分) 保留链表的原有顺序,在原链表中删除这个已知节点的下一个节点.
(2)(2分) 保留链表的原有顺序,在原链表中删除这个已知节点.
思路:(1)传统的删节点.
(2)移花接木,释放原pCurrent节点中的原Data指针.
将pCurrent节点中保存的Data指针换为pCurrent的下一个节点中的Data指针,
将pCurrent节点的Next指针换为pCurrent的下一个节点中的Next指针,
然后删除pCurrent的下一个节点.(完成)
/********/
(1)
node* pTemp = pCurrent->Next;
pCurrent->Next = pTemp->Next;
if(pTemp->Data != NULL)
{
delete(pTemp->Data);
pTemp->Data=NULL;
}
if(pTemp != NULL)
{
delete(pTemp);
pTemp=NULL;
}
(2)
Data* pTemp0 = pCurrent->Data;(这里题目缺少Data指针的具体类型哈...)
node* pTemp1 = pCurrent->Next;
pCurrent->Next = pTemp1->Next;
pCurrent->Data = pTemp1->Data;
if(pTemp0 != NULL)
{
delete pTemp0;
pTemp0 = NULL;
}
if(pTemp1->Data != NULL)
{
delete pTemp1->Data;
pTemp1->Data = NULL;
}
if(pTemp1 != NULL)
{
delete pTemp1;
pTemp1 = NULL;
}
/***finished***/
关于我们|商务合作|小黑屋|手机版|联系我们|服务条款|隐私保护|帮学堂| 网站地图|院校地图|漏洞提交|考研帮
GMT+8, 2025-9-28 03:52 , Processed in 0.089449 second(s), Total 8, Slave 8(Usage:2.75M, Links:[2]1,1_1) queries , Redis On.
Powered by Discuz!
© 2001-2017 考研 Inc.