数据结构利用头插法判断回文数列出现一个错误 求助
#include<stdio.h>
#include<stdlib.h>
typedef struct sta
{
int data;
struct sta *next;
}use;
int main()
{
int all,i;
char a[10];
use *L,*s;
L=s=(use *)malloc(sizeof(use));
s=NULL;
L->next=s;
printf("请输入节点的长度:");
scanf("%d",&all);
for(i=0;i<all;i++)
{
s=(use *)malloc(sizeof(use));
printf("请输入数据:");
scanf("%d",&s->data);
a[i]=s->data;
s->next=L->next;
L->next=s;
}
for(L=L->next;L!=NULL;L=L->next)
printf("%d\t",L->data);
printf("\n");
for(i=0;i<all;i++)
printf("%d\t",a[i]);
for(i=0;i<all;i++)
{
for(L=L->next;L!=NULL;)
{
if(a[i]!=L->data)
{printf("该数列不是回文数列\n");break;}
else{L=L->next;break;}
}
if(a[i]!=L->data)break;
}
return 1;
}
最后的双重循环利用断点断在for(i=0;i<all;i++)调试,下一步运行到for(L=L->next;L!=NULL;)就会出错.
求解,这是为什么??
[解决办法]
第29行:
for(L=L->next;L!=NULL;L=L->next)
最后一轮循环后,L 都指没了
到第36行:
for(L=L->next;L!=NULL;)
此时L->next就断掉了