C++单向链表,如何让上一个节点的数据,等于下一个节点的数 我是这样写的但是不行示解上代码
//结构体,每个结点表示一节蛇的身体座标struct Node {
int x, y;
Node* enxt;
};
class List {
Node* head;
public:
List() { head = new Node; head->enxt = NULL; }
void CreateList(int n);//创建蛇
void PrintList(HDC hdc);//画蛇
void ChangeList(int f);//改变每个节点的座标来达到移动 传参f代表的是蛇移动的方向 请大佬重点帮解释一下我这个函数错在那里了。
};
void List::CreateList(int n)
{
Node* end, * temp;
end = head;
for (int i = 0; i < n; i++)
{
temp = new Node;
temp->x = 90 + i * 30;
temp->y = 60;
temp->enxt = NULL;
end->enxt = temp;
end = temp;
}
}
void List::PrintList(HDC hdc)
{
Node* p = head->enxt;
WCHAR szbuf[256];
int y = 0;
while (p != NULL)
{
// TextOut(hdc, 0, 0+y*30, szbuf, wsprintf(szbuf, TEXT("x=%d,y=%d"), p->x, p->y));
// MessageBox(NULL, szbuf, TEXT(""), MB_OK);
Rectangle(hdc, p->x, p->y, p->x + 30, p->y + 30);
p= p->enxt;
y++;
}
}
void List::ChangeList(int f)
{
Node* p=head->enxt;
Node* temp;
int i = 0;
while (p != NULL)
{
//保存上一节蛇的信息
temp = p;
switch (f)
{
case 1:
{
if (i == 0)
{
//按下时,让蛇头y座标下移 现在只是测试还没有加入时时器。
p->y -= 30;
}
else {
这是每二节蛇,认他的座标等于上一节的位置
p->y = temp->y;
p->x = temp->x;
}
break;
}
case 2:
{
if (i == 0)
{
p->y += 30;
temp = head->enxt;
}
else {
p->y = temp->y;
p->x = temp->x;
}
break;
}
case 3:
{
if (i == 0&&p->x>0)
{
p->x -= 30;
temp = head->enxt;
}
else {
p->y = temp->y;
p->x = temp->x;
}
break;
}
case 4:
{
if (i == 0)
{
p->x += 30;
temp = head->enxt;
}
else {
p->y = temp->y;
p->x = temp->x;
}
break;
}
}
p = p->enxt;
i++;
}
}