使用 For 循环创建链表 (c++)
Creating Linked List using For Loop (c++)
我试图使用 for 循环创建一个链表,但是 create() 方法中 for 循环中的 'new' 没有完全分配一个新槽来存储新数据。结果,当我尝试打印列表时,出现了无限循环。有人可以告诉我这里有什么问题吗?
struct node
{
double value;
node * next_ptr;
node(){}
node(double val, node * p): value(val), next_ptr(p) {}
~node(){}
};
node * create()
{
using namespace std;
node temp = {0, nullptr};
node * result;
for(int i=1; i<5; ++i)
{
result = new node;
result->value = i;
result->next_ptr = &temp;
temp = *result;
}
return result;
};
您进入无限循环的原因可能是因为:
temp = *result;
您正在将 *result
的值复制到类型为 node
的新对象中,该对象与您创建的对象无关。
您想做的是存储一个指针:
node* temp = nullptr;
node* result;
for(int i=0; i<5; ++i)
{
result = new node;
result->value = i;
result->next_ptr = temp;
temp = result;
}
return result;
学习价值的一部分,只是坚持std::forward_list
或std::list
,而不是列表。或者甚至更好地使用 std::vector
或其他容器(取决于您对容器的用途)。
创建 linkedin for 循环的简单方法
#include <iostream>
class LinkedList {
public:
int value;
LinkedList * next;
};
int main()
{
LinkedList *List = nullptr;
LinkedList *head = List;
LinkedList *prev;
for (int i=0; i< 3;i++)
{
LinkedList *temp = new(LinkedList);
temp->value = i;
temp->next = nullptr;
if (head == nullptr)
{
head = temp;
prev = head;
}
else
{
prev->next = temp;
prev = temp;
}
}
}
我试图使用 for 循环创建一个链表,但是 create() 方法中 for 循环中的 'new' 没有完全分配一个新槽来存储新数据。结果,当我尝试打印列表时,出现了无限循环。有人可以告诉我这里有什么问题吗?
struct node
{
double value;
node * next_ptr;
node(){}
node(double val, node * p): value(val), next_ptr(p) {}
~node(){}
};
node * create()
{
using namespace std;
node temp = {0, nullptr};
node * result;
for(int i=1; i<5; ++i)
{
result = new node;
result->value = i;
result->next_ptr = &temp;
temp = *result;
}
return result;
};
您进入无限循环的原因可能是因为:
temp = *result;
您正在将 *result
的值复制到类型为 node
的新对象中,该对象与您创建的对象无关。
您想做的是存储一个指针:
node* temp = nullptr;
node* result;
for(int i=0; i<5; ++i)
{
result = new node;
result->value = i;
result->next_ptr = temp;
temp = result;
}
return result;
学习价值的一部分,只是坚持std::forward_list
或std::list
,而不是列表。或者甚至更好地使用 std::vector
或其他容器(取决于您对容器的用途)。
创建 linkedin for 循环的简单方法
#include <iostream>
class LinkedList {
public:
int value;
LinkedList * next;
};
int main()
{
LinkedList *List = nullptr;
LinkedList *head = List;
LinkedList *prev;
for (int i=0; i< 3;i++)
{
LinkedList *temp = new(LinkedList);
temp->value = i;
temp->next = nullptr;
if (head == nullptr)
{
head = temp;
prev = head;
}
else
{
prev->next = temp;
prev = temp;
}
}
}