链表中的函数调用

daemonhunter0 2010-04-23 08:05:46
下面是头插法建立单链表
#include <stdio.h>
#include <malloc.h>
#define NUll 0
typedef struct Node//建立结点
{
int date;
struct Node* next;
}Node,*LinkList;
void InitList(LinkList *L)//定义初始化但连表函数
{
*L=(LinkList)malloc(sizeof(Node));
(*L)->next=NULL;
}
void CreateFromHead(LinkList *L)//定义头插法建立单连表函数
{
Node *s;
char c;
int flag=1;
while(flag)
{
c=getchar();
if(c!='$')
{
s=(Node*)malloc(sizeof(Node));
s->date=c;
s->next=L->next; //这里出错
L->next=s; //这里出错

}
else flag=0;
}
}
int main()
{
LinkList *L;
void InitList(LinkList *L);//函数声明
void CreateFromHead(LinkList *L);//函数声名
InitList(L);//调用初始化函数
CreateFromHead(L);//调用头插法函数
return 0;

}
编译时出错说left of '->next' must point to class/struct/union
E:\书店.cpp(27) : error C2227: left of '->next' must point to class/struct/union
是不是参数传递有问题。请高手指导下,谢谢。
...全文
261 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
daemonhunter0 2010-04-23
  • 打赏
  • 举报
回复
xie le 好像明白了一点,谢谢大家
liangshixue 2010-04-23
  • 打赏
  • 举报
回复
LinkList *L;是二级指针;
s->next=L->next; //这里出错
L->next=s; //这里出错


L->next;中的L是指针的地址。
要去结构体的next应该是
s->next=(*L)->next; //这里出错
(*L)->next=s

void CreateFromHead(LinkList *L);//函数声名

这里不需要二级指针只需给链表的地址即可

LinkList L
void CreateFromHead(LinkList L);//函数声名


一般处理:
int main()
{
LinkList L;
void InitList(LinkList *L);//函数声明
void CreateFromHead(LinkList *L);//函数声名
InitList(&L);//调用初始化函数
CreateFromHead(L);//调用头插法函数
return 0;

}
selooloo 2010-04-23
  • 打赏
  • 举报
回复
L是二级指针
stjay 2010-04-23
  • 打赏
  • 举报
回复
你前面写对
后面的咋不会了
(*L)->next

69,373

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧