009实现一个算法来删除单链表中的一个结点,仅仅给出指向那个结点的指针(keep it up)
Posted zhchoutai
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了009实现一个算法来删除单链表中的一个结点,仅仅给出指向那个结点的指针(keep it up)相关的知识,希望对你有一定的参考价值。
呵呵,这个题不能直接删除已知的结点。由于是单链表,不知道前驱,仅仅知道
后继结点,直接删除会使链表断开。只是我们能够删除已知结点的后继结点,
后继结点,直接删除会使链表断开。只是我们能够删除已知结点的后继结点,
把后继结点的值赋值给已知结点。
#include <iostream> struct Node { int data; Node* next; }; bool removeNode(Node* vNode) { if (vNode == NULL || vNode->next == NULL) return false; Node* pNext = vNode->next; vNode->data = pNext->data; vNode->next = pNext->next; delete pNext; pNext = NULL; } void initList(Node* vRoot) { if (vRoot == NULL) { std::cout << "wrong node\n"; return ; } for (int i=0; i<20; ++i) { Node* Temp = new Node; Temp->data = i + 1; Temp->next = vRoot->next; vRoot->next = Temp; } } int main() { Node* Root = new Node; Root->next = NULL; initList(Root); while (Root->next)//最后一个结点没有删除 { if (!removeNode(Root)) break; } std::cout << Root->data << std::endl; delete Root; Root = NULL; system("pause"); return 0; }
以上是关于009实现一个算法来删除单链表中的一个结点,仅仅给出指向那个结点的指针(keep it up)的主要内容,如果未能解决你的问题,请参考以下文章