C Создание связанного списка со следующим и предыдущим указателем. - PullRequest
0 голосов
/ 30 декабря 2018

Это домашнее задание для школы.У меня есть структура Employee, которая выглядит следующим образом

typedef struct TEmployee
{
    struct TEmployee * m_Next;
    struct TEmployee * m_Bak;
    char * m_Name;
} TEMPLOYEE;

, и функция для добавления нового сотрудника, который в настоящее время выглядит следующим образом, но я не уверен, как заставить m_Bak указывать на предыдущего сотрудника

TEMPLOYEE * newEmployee(const char * name, TEMPLOYEE * next)
{
    TEMPLOYEE* head = NULL;
    head = malloc(sizeof(TEMPLOYEE));
    if(head==NULL)
    {
        return NULL;
    }

    head -> m_Name = strdup(name);
    head -> m_Next = next;
    head -> m_Bak = NULL;

    return head;
}

Любая помощь приветствуется.

1 Ответ

0 голосов
/ 30 декабря 2018

Если я правильно понял, попробуйте это:

TEMPLOYEE *newEmployee(const char *name, TEMPLOYEE *next)
{
  TEMPLOYEE *carry = (TEMPLOYEE *)malloc(sizeof(TEMPLOYEE));

  carry->m_Next = NULL;
  carry->m_Bak = NULL;
  carry->m_Name = (char *)malloc(sizeof(char) * strlen(name) + 1); // +1 for \0
  strcpy(carry->m_Name, name);

  if (next == NULL)
  {
    return carry;
  }
  else
  {
    carry->m_Next = next;
    return carry;
  }
}

Когда ваш *next равен NULL, это создает новый старт.Когда вы добавляете нового сотрудника, он добавляет его к началу.

...