C语言实现链表出错提示node没有定义,但是明明定义了啊
#include <stdio.h>#include<stdlib.h>
struct list
{
int data;//数据域
struct list *next;//指针域
};
struct list *create_list()//建立一个节点
{
return calloc(sizeof(struct list),1);
}
/*struct list *insert_list(struct list *ls,int n,int data)//在指定位置插入元素
{
struct list *p=ls;
while(p && n--)
{
p=p->next;
}
if(p==NULL)
{
return NULL;//n的位置大于链表节点数目
}
struct list *node=create_list();
node->data=data;
node->next=p->next;
p->next=node;
return node;
}*/
struct list *insert_list(struct list *ls, int n, int data)//在指定位置插入元素
{
struct list *p = ls;
while(p && n--)
{
p = p->next;
}
if (p == NULL)
{
return NULL;//n的位置大于链表节点数
}
struct list *node=create_list();//新建立一个节点
node->data = data;
node->next = p->next;
p->next = node;
return node;
}
void traverse(struct list *ls)//循环遍历链表
{
struct list *p=ls;
while(p)//最后一个节点数据还是不为空所以进入到w循环
//但是再next一次就是空的不能进行了
{
printf("%d\n",p->data);
p=p->next;//p指向对应的下一个节点
}
}
int main(void)
{
//struct list *first=calloc(sizeof(struct list),1);//在堆中间创建一个节点
struct list *first=create_list();
struct list *second=create_list();//在堆中间创建一个节点
struct list *third=create_list();//在堆中间创建一个节点
first->next=second;
second->next=third;
third->next=NULL;
first->data=1;
second->data=2;
third->data=3;
//insert_list(first,2,10);
traverse(first);
return 0;
}
看看这个吧:http://bbs.fishc.com/forum.php?mod=viewthread&tid=45460&ctid=184 我已经知道我的原因了,是编译器不对,在vc6.0上不通过,在vs2013上可以通过,gcc也可以通过
页:
[1]