c++里的c错误

来源:百度知道 编辑:UC知道 时间:2024/06/22 21:53:27
以下这段程序我只写在了cpp文件里
#include<iostream>
using namespace std;

struct lnode
{
double data;
lnode * next;
};
void showlist(lnode * );
void addtoend(lnode * m,lnode *);
lnode* getnode();
void deletelist(lnode * );
void main()
{
lnode * head=NULL,*temp;
temp=getnode();
while(temp)
{
cout<<"data?";
cin>>temp->data;
if(temp->data>0)
addtoend(temp,head);
else
break;
temp=getnode();
}
showlist(head);
deletelist(head);
}

void showlist(lnode * list)
{
if(list)
{
cout<<list->data<<endl;
if(list->next)
{
showlist(list->next);
}

}

void addtoend(lnode * m,lnode **head)
{
if(*head==NULL)
{
*head=m;
}else
{
addtoend(m,&(*head)->next);
}
}

lnode* ge

两处错误:
1、showlist函数的定义缺少了半边大括号‘}’;
2、addtoend函数的定义和申明、调用的形式不一致(定义时的第二个参数是二级指针,而申明和调用时都是一级指针)。

修改后可以编译通过,代码如下:

#include<iostream>
using namespace std;

struct lnode
{
double data;
lnode * next;
};
void showlist(lnode * );
void addtoend(lnode * m,lnode **);
lnode* getnode();
void deletelist(lnode * );
void main()
{
lnode * head=NULL,*temp;
temp=getnode();
while(temp)
{
cout<<"data?";
cin>>temp->data;
if(temp->data>0)
addtoend(temp,&head);
else
break;
temp=getnode();
}
showlist(head);
deletelist(head);
}

void showlist(lnode * list)
{
if(list)
{
cout<<list->data<<endl;
if(list->next)
{
showlist(list->next);
}

}
}

void addtoend(lnode * m,lnode **