Можно ли настроить эту функцию удаления в круговом связанном списке? - PullRequest
0 голосов
/ 20 сентября 2019

Следующий код хорошо работает со всеми, кроме функции удаления.Когда я удаляю узлы с самого начала, с конца, с середины, а затем снова с самого начала, кажется, что код не работает.

Можно ли это исправить?Единственная проблема заключается в том, чтобы быть с функцией удаления.Также можно подойти к удалению на последнем узле, не используя функцию linkLength?

void del()
{
    printf("\nDeletion Activated!!\n" );

    int i,pos;

    if(front == NULL)
        return;


    printf("\nEnter the position : ");
    scanf("%d",&pos);

    // If there is only one node
    if (front -> next == front)
    {
        front = NULL;
        free(front);
    }

    // To check whether deletion is Possible
    if(pos > linkLength(front))
    {
        printf("\nDeletion Not Possible\n");
        main();
    }

    // To delete the first node
    if(pos == 1)
    {
        temp = front;
        front = front->next;
        rear->next = front;
        free(temp);
    }

        // to delete from the end
    else if(pos == linkLength(front) + 1)
    {

        if(front == NULL)
        {
            printf("\nList is empty");
            return;
        }


            // if there is more than one node
        else
        {
            temp = front;

            while (temp->next != front) {
                x = temp;
                temp = temp->next;
            }

            x->next = temp->next;
            free(temp);
        }
    }

        // from any other position
    else
    {

        for(temp = front,i = 1;temp != NULL;temp = temp->next,i++)
        {
            if(i == (pos - 1)){
                x = temp->next;
                temp->next = temp->next->next;
                free(x);
                break;
            }
        }
    }
}

1 Ответ

0 голосов
/ 22 сентября 2019

Проблема возникает, когда я удаляю первый узел, затем последний и средний узел.Затем, когда я возвращаюсь, чтобы удалить первый узел, он, кажется, не удаляет.

...