C - Вдвойне связанный список добавления нового узла дает ошибку во время выполнения

Итак, у меня есть следующий код для двусвязного списка, который хорошо работал для односвязного списка. Когда я пытаюсь добавить новый узел, используя функцию addFirst в начале узла, он выдает ошибку во время выполнения, когда у меня есть одна строка (закомментированная). В противном случае функция работает для односвязного списка и не выдает ошибку без этой строки.

void addFirst(DblList *lstPtr, int data)
{
  Node *newNodePtr = (Node *) malloc(sizeof (Node));
  if (newNodePtr == NULL) {
    printf("Unable to allocate new node\n");
    return;
  }
  newNodePtr->data = data;
  newNodePtr->next = NULL;
  newNodePtr->prev = NULL;
  if(lstPtr->nodeCount == 0){
    lstPtr->head = newNodePtr;
    lstPtr->tail = newNodePtr;
  }
  else{
    newNodePtr->next = lstPtr->head;
    lstPtr->head->prev = newNodePtr; //this is the toubling line
    lstPtr->head = newNodePtr;
  }
  lstPtr->nodeCount++;
}

Вот пользовательские типы

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

typedef struct DblList {
  struct Node *head;
  struct Node *tail;
  int nodeCount;
} DblList;

void initList(DblList *lstPtr)
{
  lstPtr->head = NULL;
  lstPtr->tail = NULL;
  int nodeCount = 0;
}

Edit-Кажется, это ошибка сегментации, но я не уверен.

0 ответов

Другие вопросы по тегам