#include
#include
#include
struct LinkList
{
int data;
struct LinkList next;
};
struct LinkList Reverse ( LinkList *list ) *出错**
{
LNode *tmp = NULL;
LNode *p = NULL;
if (list == NULL)
{
return NULL;
}
tmp = list->next;
while (tmp->next != NULL)
{
p = tmp->next;
tmp->next = p->next;
p->next = list->next;
list->next = p;
}
return list;
}
int main( )
{
int i=0;
int b;
struct LinkList *L;
struct LinkList *p;
struct LinkList *q;
p=L->next;
while (b!= -1)
{
while( scanf("%d\n",&b)&&(b>0) )
{ p->data=b;
p=p->next;
i++;
}
}
struct LinkList Reverse ( LinkList L ); *出错**
q=L->next;
while(i>=0)
{
printf("%d\n",q->data);
i--;
}
return 0;
}
为什么会提示
Main.c:31: error: expected ‘)’ before ‘*’ token
Main.c: In function ‘main’:
Main.c:68: error: expected ‘)’ before ‘*’ token
struct LinkList Reverse ( LinkList L ); 出错*
q=L->next;//这样操作不对
因为,你把 LinkList定义为结构体类型,相应的L就是结构体变量
struct LinkList
{
int data;
struct LinkList next;
};
next是结构体L的成员,C语言访问结构体成员的方式是:L.next;
或者你把L定义为指针变量:LinkList *L,这样你可以通过->来访问L指向的结构体的成员L->next。
LNode的定义在哪里。
用ideone.com或者codepad.com在线编译看看。
http://ideone.com/WJp5rS
没有你说的错误
你的next应该定义成指针类型
struct LinkList *next
函数返回值也应该是指针
Reverse()函数应该返回指针,而且在结构体定义的时候应该注意,结构体不可以包含自身的实例,但是确可以包含指向自身实例的指针。所以你一开始,
定义的结构体就是错的。
函数定义的时候,形参类型要写对,调用的时候,直接写定义好的实参。
比如:
struct LinkList Reverse ( struct LinkList *list )
没有LinkList这个数据类型
struct LinkList Reverse ( L );
调用的使用不需要数据类型