我正在尝试通过遍历链接列表来填充已创建的链接列表,然后使用用户输入填充每个节点数据,但由于某种原因,在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;
}
}
所以,现在我认为错误与输入
有关答案 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;
}
}