在下面的链接列表实现代码中,我收到错误cannot convert node_type to node * for argument 1 to 'node *insert(node *)'
。我不明白这个消息。基本上该程序不能从main()
调用功能insert
。链接列表在C中的实现
任何人都可以帮忙解释一下吗?
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
struct node_type
{
int data;
node_type *next;
};
typedef struct node_type node;
node *insert(node *head);
void print1(node *temp);
int main(void){
int dat;
char x,ch;
node *temp;
temp=NULL;
printf("do u wanna enter a new node? \n");
scanf("%c", &x);
if (x=='y' or x=='Y'){
temp=(node *)malloc(sizeof(node));
printf("enter the data: \n");
scanf("%d ", &dat);
temp->data= dat;
temp->next = NULL;
}
printf("do u want to insert another element?\n");
scanf("%c ", &ch);
if(ch=='y' or ch=='Y'){
insert(temp);
}
print1(temp);
getch();
}
node *insert(node *temp)
{
int dat;
char ch1;
node *newnode;
newnode=(node *)malloc(sizeof(node));
printf("enter the data: ");
scanf("%d", &dat);
newnode->data=dat;
newnode->next=temp;
temp=newnode;
printf("do u want to insert another element?\n");
scanf("%c ", &ch1);
if(ch1=='y' or ch1=='Y'){
insert(temp);
}
else return temp;
}
void print1(node *temp)
{
int t;
while(temp!= NULL){
t= temp->data;
temp= temp->next;
printf(" %d ", t);
}
}
附加线在严格C,该结构定义将不编译。如果使用C++编译器进行编译,它将进行编译。由于您使用的是'',因此您可能使用了MS Visual C++,我猜你的代码正在编译为C++而不是C。 –
奇怪**错误** –