c++编程,在编译时没问题,运行时,输入数据之后,程序就会弹出对话框“程序已停止工作”,为什么?

#include<iostream>#include<cstdlib>#include<cstdio>usingnamespacestd;structnote{intda... #include<iostream>
#include<cstdlib>
#include<cstdio>
using namespace std;
struct note
{
int data;
note *next;
};
int main()
{
note *q,*p,*head,*t;
int a,n;
scanf("%d",&n);
head=NULL;
for(int i=1;i<=n;i++)
{
scanf("%d",&a);
p=(note *)malloc(sizeof(note));
p->data=a;
p->next=NULL;
if(head=NULL)
{
head=p;
}
else
{
q->next=p;
}
q=p;
}
t=head;
while(t!=NULL)
{
printf("%d",t->data);
t=t->next;
}
return 0;
}
展开
 我来答
节子不哭
2017-07-18 · TA获得超过460个赞
知道小有建树答主
回答量:340
采纳率:85%
帮助的人:161万
展开全部
if(head==NULL)
{
head=p;
}
错在双等号表示等于判断,以后写NULL与变量的判断,NULL写在前面,NULL =head 这样就会报错,能够找到自己出错的地方,head =NULL 逻辑上错了,语法上正确,不易查找到出错点
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
推荐于2018-04-19
展开全部
这个是指针越界的提示。

if(head=NULL)

这里判断相等应该是两个等号
追问
太感谢了,主要是自己太粗心大意了,总是把=和==弄混
太感谢了
追答
不客气
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友0b71ac0
2017-07-19 · 超过23用户采纳过TA的回答
知道答主
回答量:60
采纳率:100%
帮助的人:32.9万
展开全部
if(head = NULL)
{
    head = p;
}

这里出错了。像这种写法,建议写成:

  if(NULL == head)
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
帐号已注销
2016-12-24
知道答主
回答量:38
采纳率:66%
帮助的人:7.3万
展开全部
因为你的程序有问题
追问
你看看人家一楼,解释的多详细,你就说一句有问题,我也知道有问题,说了等于白说!!!
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式