//
TODO:创建单链表
功能:补全代码,完成创建单链表的功能,前台录入一串数据,用空格隔开,输入0后,按回车完成输入。
如果输入数字小于 0,提示:"输入数据非法,建立链表停止\n";单链表创建成功提示:"链表创建成功\n"
如录入:1 2 3 4 5 6 7 8 9 10 0,回车,创建成功的链表为 1 2 3 4 5 6 7 8 9 10
参数:Node *pNode 是需要操作的单链表
返回值:链表创建成功返回链表,链表创建失败则返回null。
*/
Node *creatList(Node *pNode) {
int i,n;
Node *p,q;
p=q=(Node)malloc(sizeof(Node));
while(scanf("%d",&p->element)&&p->element!=0)
{
if(p->element<0);
printf("输入数据非法,建立链表停止\n");
break;
if(pNode=NULL)
pNode=p;
else
q->next=p;
q=p;
p=(Node*)malloc(sizeof(Node));
n++;
}
q->next=NULL;
printf("链表创建成功\n");
return pNode;
}*/
问题已经在下面代码中用注释标出。
Node *creatList(Node *pNode) {
int i, n=0;
Node *p,*q;
p = q = (Node*)malloc(sizeof(Node));
while (scanf("%d", &p->element) && p->element != 0)
{
if (p->element < 0)//你这里直接写了个“;”号,相当于if条件没起作用
{
printf("输入数据非法,建立链表停止\n");
break;
}
if (pNode == NULL)//这里应该用==
pNode = p;
else
q->next = p;
q = p;
p = (Node*)malloc(sizeof(Node));
n++;//n记得初始化为0
}
q->next = NULL;
printf("链表创建成功\n");
return pNode;
}