Добавляем элемент в список с двойной связью по ссылке в C

Я пытаюсь написать двусвязный список на C.

Это моя реализация:

   typedef struct
    {
        void* value;
        struct Dlist* prev;
        struct Dlist* next;
    } Dlist;

    Dlist* createDlist()
    {
      Dlist* newList = (Dlist*)malloc (sizeof(Dlist));
      newList->value = NULL;
      newList->next = NULL;
      newList->prev = NULL;
      return newList;
    }

    /*
     * Get last element from Dlist
     */
    Dlist* getLast(Dlist* list)
    {
      if (list)
      {
          while(list->next)
            list = (Dlist*)list->next;
      }
      return list;
    }

    /*
     * add element to list at start
     */
    Dlist* addItemAtStart(Dlist* list, Pair* value)
    {
      Dlist* newList = NULL;
      Dlist* last = NULL;

      newList = createDlist ();
      newList->value = value;

      if (list)
      {
         last = getLast(list);
         last->next = newList;
         newList->prev = last;

         return list;
      }
      else
        return newList;
    }

Теперь, когда я пытаюсь добавить элемент в свой список, мне нужно каждый раз назначать новое значение:

list = addItemAtStart(list, "Hello");

Но я хочу только

addItemAtStart(list, "Hello");

Без list = Как сделать так, чтобы этот список изменялся без назначения?

ps Я получаю segfaut с Dlist * addItemAtStart (Dlist ** list, void * value)

Я пытаюсь вставить так:

  Dlist **list = NULL;
  addItemAtStart(&list, "Hello");

Спасибо.

0
задан 0xAX 14 August 2011 в 17:41
поделиться