调试时发现插入函数在调用时没有响应,百思不得其解。
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#include <windows.h>
//结构体定义
typedef struct node
{
int x;
int y;
struct node *next;
}Node,*Snack;
//所用函数
void initsnack(Snack s);
void insert_node(Snack s,int x,int y);//问题所在函数
void show(Snack s);
int main()
{
Snack s;
initsnack(s);
insert_node(s,12,17);
insert_node(s,15,16);
show(s);
}
void initsnack(Snack s)
{
//初始化蛇身并赋值 带尾指针循环链表
s=(Node*)malloc(sizeof(Node));
s->next=s;
printf("OK1\n");
}
void insert_node(Snack s,int x,int y)
{
//插入节点
Snack p=(Node *)malloc(sizeof(Node));
if(!p) printf("overflow");
p->x=x;
p->y=y;
s->next=p;//调试时显示程序到这儿就不往下进行了,为什么啊?
p->next=s;
s=p;
free(p);
printf("OK2\n");
}
void show(Snack s)
{
//显示函数
Snack p=(Snack)malloc(sizeof(Node));
p=s->next;
while(p->next!=s->next)
{
p=p->next;
printf("x=%d,y=%d\n",p->x,p->y);
}
}