我用C编写了这段代码,我是编程世界的新手,所以请帮我解决一下我的错误。我正在取消引用指向不完整类型的指针。运行此代码需要进行哪些更改?
enter code here
#include <stdio.h>
#include <stdlib.h>
struct {
int data;
struct node* next;
};
struct node* head;
void Insert(int data, int n)
{
int i;
struct node* temp1, *temp2;
temp1 = (struct node*)malloc(sizeof(struct node));
temp1->data = data;
temp1->next = NULL;
if(n==1)
{
temp1->next = head;
head = temp1;
return;
}
temp2 = head;
for(i=0; i<n-2; i++)
{
temp2 = temp2->next;
}
temp1->next = temp2->next;
temp2->next = temp1;
}
void print()
{
struct node* temp = head;
while(temp != NULL)
{
printf("%d", temp->data);
temp = temp->next;
}
print("\n");
}
int main()
{
head = NULL;
Insert(2,1);
Insert(3,2);
Insert(4,1);
Insert(5,2);
Insert(1,3);
Print();
}
答案 0 :(得分:2)
您在结构定义中省略了标记名称节点
struct {
int data;
struct node* next;
};
改为写
struct node {
^^^^
int data;
struct node* next;
};
考虑到通过与数组的类比,当列表中的位置从0开始时更好。
不带参数的函数main也应声明为
int main( void )
和函数print应声明为
void print( void );