C语言 添加到列表末尾的同一链表函数是否可以用于添加到许多不同的链表



这是我的链表函数,它将新节点添加到列表的末尾。

void addNodeAtTail( struct Student *student, struct Courses *newNode )
  {
      newNode->next = NULL;           // sucessor of newNode is NULL, because newNode becomes tail of list
      if ( student->list == NULL )
          student->list = newNode;    // if list is empty, newNode will be head of list
  else
  {
      struct Courses *temp = student->list;
      while( temp->next != NULL ) // search last element in list
          temp = temp->next;
      temp->next = newNode;       // successor of last node is newNode
  }
  }

这个相同的函数可以用于将节点添加到我可能拥有的不同链表中吗?还是因为我们正在处理另一个结构而必须创建另一个函数?

如果您尝试添加的对象不是struct Courses *newNode则无法使用此功能添加它。如果你需要一个通用的链表,你需要弄乱传递void *这很有趣。这是一个合理的教程:

http://www.geeksforgeeks.org/generic-linked-list-in-c-2/

目前,没有,因为您正在明确处理struct Courses的实例。如果你想要一个通用列表,请使用 cons-cell:

struct list { 
   struct list* next;
   void* data;
}

此外,C 中的列表可以嵌入到其他结构中。例如,请参阅有关如何在 Linux 内核中使用列表的说明。以下是文章的片段:

struct my_cool_list{
    struct list_head list; /* kernel's list structure */
    int my_cool_data;
    void* my_cool_void;
};

相关内容

  • 没有找到相关文章

最新更新