【问题标题】:Linked List HeadInsert链表头插入
【发布时间】:2013-02-11 18:22:48
【问题描述】:
template <class T>
void List<T>::insertAtHead(T item)
{
     ListItem<T> *node=new ListItem<T>(item);
     ListItem<T> *temp=head;
     if (temp==NULL)
     {                
         head=node;
     }
     else if (temp!=NULL)
     {
         node->next=temp;     
         temp->prev=node;
         head=node;
     }                                
 }

我正在使用类创建一个链表。ListItem 是一个包含下一个和前一个指针的结构,每当创建一个新节点时,它们在结构中被指向 NULL。ListItem 的值是数据类型 T,可以是任何值从 int 到 string。我想知道这段代码是否有任何漏洞。它基本上是数据结构的分配,并且已经给了我们一个测试文件来测试我们的代码。但是当我运行那个测试文件时,它失败了这段代码。我只是想知道这段代码有什么问题。谢谢

【问题讨论】:

  • 你期望它做什么/不做什么?
  • “它失败了” - 它究竟是如何失败的?你在处理什么问题?您是如何尝试这段代码的?...
  • OT:你打算有一个循环链表吗?

标签: c++


【解决方案1】:

我假设你有一个 head 变量作为 List 类型的成员变量

另外,根据您的 next/prev 参考资料,我假设您有一个双向链表:

ListItem<T> *temp = head;

if (temp != NULL) {
    temp->prev = node;
    head = node;
    node->prev = NULL;
    node->next = temp;
} else {
    head = node;
    node->prev = NULL;
    node->next = NULL;
}    

【讨论】:

    猜你喜欢
    • 2021-02-07
    • 2021-01-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-07-02
    • 2018-04-05
    • 1970-01-01
    相关资源
    最近更新 更多