提示用户填写链接列表

时间:2017-11-22 05:12:33

标签: c++ list

我正在尝试通过遍历链接列表来填充已创建的链接列表,然后使用用户输入填充每个节点数据,但由于某种原因,在1040次后它停止询问更多值。但是,假设我有大小为1000的链接列表,它可以正常工作但超过1040的大小它不会提示用户。每次我生成随机的1100元素时,我都没有输入值,我正在复制到控制台。

inline void myArray<T>::init() {
 Node<T>* temp = head;
T input;
    while(temp!=NULL) {
    cin >> input;
    temp->data = input;
    temp = temp->next;

}
}

如果我做这样的事情,它的工作正常无论链接列表的大小是什么......

inline void myArray<T>::init() {
 Node<T>* temp = head;
    while(temp!=NULL) {
    temp->data = 5;
    temp = temp->next;

}
}

所以,现在我认为错误与输入

有关

2 个答案:

答案 0 :(得分:0)

我不确定你的意思是“继续失去头脑”。但是,当您编写“head = temp;”时,您正在将头节点重新分配给temp。然而,temp-&gt; next在前一行中被指定为head。因此,您可能希望检查您的作业语句,以确保您所做的是您真正想要的。希望有所帮助。

答案 1 :(得分:0)

我相信,如果你的头是否为空,你应该设置temp->next = head。 或者,新节点与现有节点之间没有链接。它不能破坏链表。

inline myArray<T>::myArray(int size, T value) {
  setSize(size);
  for(int i = 0;i<size;i++) {
  Node<T>* temp = new Node<T>();

  if(i==size-1) {
    temp->data = 555555555;  //set a different value to distinguish between head and other node
    temp->next = 0;
  } else {
    temp->data = 0;
    temp->next = 0;
  }
  temp->next=head;
  head=temp;
  }
}