首页 > 解决方案 > 从C中的双链表中删除节点?

问题描述

typedef struct node {
    int data;
    struct node* next;
    struct node* prev;
} Node;

Node *last = NULL;
Node *head = NULL;
Node *current = NULL;
int NoNodes = 1;

void EraseNode(int value)
{
    if(value<NoNodes)
    {
        Node* currentNode = head;
        int i = 1;
        if(value=1)
        {
            head = head->next;
        }
        else
        {
            while(i < value)
            {
                currentNode=currentNode->next;
                i++;
            }
            if(currentNode->next != NULL)
                currentNode->next->prev=currentNode->prev;
            if(currentNode->prev != NULL)
                currentNode->prev->next=currentNode->next;
            NoNodes -=1;
            free(currentNode);
        }
    }
    else
        printf("There are only %d nodes. Try again",NoNodes);
}

我正在尝试做的是擦除链表中的 N 节点 & 我认为在链接prevornext节点时我搞砸了。

我遵循了一个代码示例,但它似乎不起作用。

标签: clinked-list

解决方案


推荐阅读