【发布时间】:2015-01-16 20:57:00
【问题描述】:
我认为我的问题在于 push_backs() 的使用,但我想不出解决这个问题的简单方法。我需要它来交换争论中给出的两个整数的节点,我感谢任何帮助!我是一名大一新生,在当今世界上崭露头角,乐于接受反馈!
void MyList::swap(int i, int j)
{
if (i == j || i > size() || j > size()) return;
Node *temp = head;
delete head; //pretty sure this is what's giving me issues as well
for (unsigned x = 0; x < size(); x++)
{
if (x == i)
{
int y = 0;
for (Node *itt = head; itt; itt = itt->next)
{
if (y == j)
push_back(itt->value);
y++;
}
}
else if (x == j)
{
int y = 0;
for (Node *itt = head; itt; itt = itt->next)
{
if (y == i)
push_back(itt->value);
y++;
}
}
else
{
push_back(temp->value);
}
temp = temp->next;
}
}
供参考,这里是Node类
using namespace std;
class Node
{
public:
char value;
Node *next;
Node(char value)
:value(value), next(0)
{}
};
【问题讨论】:
-
是的,当您稍后取消引用
head时,delete head将导致 undefined behavior。为什么要释放头节点的内存?尤其是以后要使用的时候? -
因为 MyList 是由“head”定义的,我无法将内容添加到完整列表中,正如我所见。哈哈
-
你应该在debugging your small program阅读这篇文章。
标签: c++ visual-studio-2013 int swap singly-linked-list