【问题标题】:C Creating a linked list with next and previous pointerC用下一个和前一个指针创建一个链表
【发布时间】:2018-12-30 14:14:48
【问题描述】:

这是学校的作业。我有一个结构 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;
}

感谢任何帮助。

【问题讨论】:

  • "不确定如何让 m_Bak 指向前一个员工" --> 如果next 不是NULLnext.m_Bak 指向前一个员工。为了得到一个好的答案,我们需要看看newEmployee()是如何被调用的。

标签: c pointers struct linked-list


【解决方案1】:

如果我理解正确,试试这个:

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 时,它会创建新的开始。当您添加新员工时,它会将其添加到开头。

猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-08-24
  • 2017-06-02
  • 1970-01-01
  • 2016-12-02
  • 2011-01-31
  • 2014-12-13
相关资源
最近更新 更多