|
自己写了个贪吃蛇的小程序,在初始化生成蛇身的时候现发现队列只能插入一个结点,找来找去找不到原因,现将程序贴上,麻烦大家赐教
#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来反美的!
|