您的位置:首页 > 职场人生

笔试/面试:删除一个无头单链表的非尾节点 ,从尾到头打印单链表

2017-07-18 10:00 567 查看
删除一个无头单链表的非尾结点

struct ListNode
{
int _value;
ListNode*_next;
ListNode(int value = 0, ListNode*pnext = NULL)
:_value(value)
, _next(pnext)
{}
};
//节点的后一个节点赋值给要删除的节点,再删除这个后面的节点。
int DelNotTail(ListNode *delnode)
{
if (delnode == NULL)
return -1;

ListNode *pnext = NULL;
pnext = delnode->_next;
delnode->_value = pnext->_value;
delnode->_next = pnext->_next;
delete (pnext);
pnext = NULL;
return 0;
}


从尾到头打印单链表:

void Print(ListNode *phead)
{
if(phead == NULL)
return ;
Print(phead->_next);
cout << phead->_value <<endl;
}


测试用例:

void TestDeleteNode()
{
ListNode *l1=new ListNode(1);
ListNode *l2 = new ListNode(2);
ListNode *l3 = new ListNode(3);
ListNode *l4 = new ListNode(4);

l1->_next = l2;
l2->_next = l3;
l3->_next = l4;
DelNotTail(l2);
Print(l1);


内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐