| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 853 人关注过本帖
标题:C++单向链表,如何让上一个节点的数据,等于下一个节点的数 我是这样写的但 ...
只看楼主 加入收藏
w18468034994
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2021-11-30
收藏
 问题点数:0 回复次数:0 
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++;
    }
}
搜索更多相关主题的帖子: void Node int 节点 temp 
2021-12-12 11:44
快速回复:C++单向链表,如何让上一个节点的数据,等于下一个节点的数 我是这样写 ...
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.046395 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved