搜索
bottom↓
回复: 2

贪吃蛇的队列只能插入一个结点,请教各位大虾和傻孩子

[复制链接]

出0入0汤圆

发表于 2009-10-12 14:52:21 | 显示全部楼层 |阅读模式
自己写了个贪吃蛇的小程序,在初始化生成蛇身的时候现发现队列只能插入一个结点,找来找去找不到原因,现将程序贴上,麻烦大家赐教

#define len sizeof(linkquen)

typedef unsigned char byte;

//声明状态类型
typedef enum{ok,error} statu;

//蛇的一个节点,存储坐标等信息
typedef struct queue
{
        byte datax;
        byte datay;
        struct queue *next;
}linkquen;

typedef struct
{
        linkquen *head;
        linkquen *rear;
}pointer;

pointer Q;        //Q应为全局变量


//开辟头结点为空,初始化蛇身
statu init_queue(void)
{
        Q.head = Q.rear = (linkquen *)malloc(len);       
        if(Q.head == NULL)
        {
                return error;
        }
        Q.rear->next = NULL;
        return ok;
}

//移动一步,蛇头即队尾插入一个新的点
statu rear_insert(byte x,byte y)
{
        struct queue *p;
        p = (linkquen* )malloc(len);
        if(p == NULL)
        {
                return error;
        }
        p->datax = x;
        p->datay = y;
        p->next = NULL;
        Q.rear->next = p;
        Q.rear = p;
        return ok;
}

初始化的时候先  init_queue( );
然后  rear_insert(5,4)//随便插入第一个坐标
这样可以,但再插入一个结点的时候就不行了,发现再插入一个结点的时候对原队列没有影响,也就是说只能插入一个结点
比较郁闷,找了半天没找着错误。

阿莫论坛20周年了!感谢大家的支持与爱护!!

月入3000的是反美的。收入3万是亲美的。收入30万是移民美国的。收入300万是取得绿卡后回国,教唆那些3000来反美的!

出0入296汤圆

发表于 2009-10-12 22:20:35 | 显示全部楼层
队列问题,一定要自己调试,建议你用VC写一个程序,然后用单步调试看看?

出0入0汤圆

 楼主| 发表于 2009-10-16 14:43:26 | 显示全部楼层
谢谢傻孩子的回复。我一直以为是程序错了,一直找错误,后来经别人指点才发现时堆的大小没设好,动态分配内存的时候不够,现在解决了。vc我没用过,编程比较差,开始自学数据结构,又看到你那13864的古董贴,那几句贪吃蛇的解释,于是决定自己编一个练练手,差不多调好了。呵呵,你解释的很经典哦。
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-4-27 18:42

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表