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

来源:互联网 发布:一淘是淘宝客吗 编辑:程序博客网 时间:2024/06/05 14:45

删除一个无头单链表的非尾结点

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);

这里写图片描述

阅读全文
0 0
原创粉丝点击