Вопросы

указатель на указатели для односвязного списка в C

У меня есть вопрос о явно связанных списках в C. Я создал связанный список с кодом, показанным ниже:

#include <stdio.h>
#include <stdlib.h>
struct node 
{
    int data;
    struct node* next;
};

struct node *mknode(int data)
{
    struct node* np=malloc(sizeof(struct node));
    np->data=data;
    np->next=NULL;
    return np;
}

struct node * insert (struct node* list,int data)
{
    struct node *np;
    struct node*curr=list;
    struct node* prev=NULL;
    np=mknode(data);
    for(;curr &&data<curr->data;curr=curr->next )
        prev=curr;


    np->next=curr;
    if(prev)
        prev->next=np;
    else
        list=np;
    return list;
}


int main()
{
    struct node* head;
    head=malloc(sizeof(struct node));
    head=insert(head,7);
    head=insert(head,2);
    head=insert(head,4);
    printf("%d",head->data);
    printf("%d",head->next->data);
    printf("%d",head->next->next->data);
    return 0;
}

Однако во время поиска в Интернете я понял, что двойной указатель используется для создания связанного списка вместо обычного указателя. Я имею в виду struct node **list , а не struct node * list . Интересно, почему ? Какой из них правильный, и если оба из них верны, в чем разница между ними, я использовал свою реализацию с основным образцом, который я написал здесь, и он работает нормально, но я не знаю, почему я должен использовать указатель на указатели? Заранее спасибо.

Читать:
SSH Bitbucket Clone в Visual Studio 2019 не работает

head=malloc(sizeof(struct node)); голова неправильно инициализирована.   —  person caesar    schedule 06.08.2013

@PeterMiehle Я не узнаю вопрос, который вы здесь указали. Извините за дубликат, но я не делал этого для дублирования цели.   —  person caesar    schedule 06.08.2013

Похожие записи

MySQL объединяет 3 таблицы в один общий столбец и изменяет столбцы

admin

Интегрируйте Stripe 3d secure в IOS

admin

Требуется добавить пользователя сразу во все командные проекты

admin

Постоянная ошибка типа при попытке получить объект в корзине S3, требующей аутентифицированного доступа

admin

В Flutter Web возникает ошибка XMLHttpRequest при выполнении вызова WCF https

admin

Как запустить экземпляр контейнера с помощью API Azure?

admin