实现一个算法,删除单链表中间的某个结点,假定你只能访问该结点

    技术2022-07-10  128

    实现一个算法,删除单向链表中间的某个结点,假定你只能访问该结点。 给定待删除的节点,请执行删除操作,若该节点为尾节点,返回false,否则返回true

    直接free(p),这样行不通,因为我们不能访问其他结点;

    如果我们只能访问该结点,可以尝试将该结点的后继结点的数据复制到当前结点,然后删除后继结点

    typedef struct  SListNode {    int  value;    // 保存的值     struct SListNode* next;    // 保存下一个结点的地址 } SListNode_t; bool deleteNode (SListNode_t *node) { if( NULL == node || NULL == node->next ) { return false; } SListNode_t * next = node->next; node->value = next->value; node->next = next->next; return true; }

     

    Processed: 0.010, SQL: 9