读书人

求查此程序在最后为什么会执行异常

发布时间: 2013-10-18 20:53:13 作者: rapoo

求查此程序在最后为什么会执行错误
#include <stdio.h>
#include <stdlib.h>

typedef struct LNode
{int data;
struct LNode *next;
}Lnode,*Linklist;

Linklist creat(int m)
{
int i;
Linklist L,p,h;
L = (Linklist)malloc(sizeof(Lnode));
h = L;
for(i = 1;i <= m;i ++)
{
p = (Linklist)malloc(sizeof(Lnode));
p -> data = i;
h -> next = p;
h = p;
}
h -> next = L -> next;
p = h -> next;
return L;
}

void Delete(int m,int s,int n,Linklist L)
{
int i;
Linklist p,h,q;
p = L;
if(m < 1)
{
printf("Game Can not Carry On.\n");
}
else{
for(i = 1;i < s;i ++)
{
p = p -> next;
}
while(p)
{
for(i = 1;i < n;i++)
{
p = p -> next;
}
q = p -> next;
printf("%d ",p -> next -> data);
p -> next = p -> next -> next;
free(q);
m --;
}
}
/*if(m < 1)
{
printf("Game Can Not Carry On.\n");
}
if(m)
{
for(i = 1;i < s;i ++)
{
p = p -> next;
}
}
while(m)
{
for(i = 1;i < n;i ++)
{
p = p -> next;
}
q = p -> next;
printf("%d ",p -> next -> data);
p -> next = p -> next ->next;
free(q);
m--;
}*/
}

void main(){
int m,n,s;
Linklist L,p,h;
printf("请依次输入m,n,s\n");
printf("m = ");
scanf("%d",&m);
printf("n = ");
scanf("%d",&n);
printf("s = ");
scanf("%d",&s);
L = creat(m);
Delete(m,s,n,L);
printf("\nGame Over.\n");
}

[解决办法]


求查此程序在最后为什么会执行异常表示调试无果,问了一个大神,说是不要随便写while(p),事实也证明确实是这个的问题,大神可否解释下为什嘛
while(p != NULL) // p 为某指针类型的判断
while( p ) //针对 p为bool类型来判断的

[解决办法]
代码功能归根结底不是别人帮自己看或讲解或注释出来的;而是被自己静下心来花足够长的时间和精力亲自动手单步或设断点或对执行到某步获得的中间结果显示或写到日志文件中一步一步分析出来的。
提醒:再牛×的老师也无法代替学生自己领悟和上厕所!
单步调试和设断点调试是程序员必须掌握的技能之一。

读书人网 >C语言

热点推荐