假设双向循环链表包含头尾哨兵结点(不存储实际内容),分别为head和tail,链表中每个结点有两个指

针域prev和next,分别指向该结点的前驱及后继结点。下面代码实现了一个空的双向循环链表,横线上应填的最

佳代码是( )。

 // 链表结点 template <typename T> struct ListNode {   T data;   ListNode* prev;   ListNode* next;    // 构造函数   explicit ListNode(const T& val = T())      : data(val), prev(nullptr), next(nullptr) {} };  struct LinkedList {   ListNode<T>* head;   ListNode<T>* tail; };  void InitLinkedList(LinkedList* list) {   list->head = new ListNode<T>;   list->tail = new ListNode<T>;   ________________________________ // 在此处填入代码 };
填写答案