C语言链表:报错error:c2223 “->next”的左侧必须指向结构/联合

原创
2017/03/02 16:19
阅读数 4.7K

今天用vs2013练习C语言,链表创建输出。但是碰到一个问题error:c2223 “->next”的左侧必须指向结构/联合。我想了一上午都没想明白,到开源中国和吾爱发完求助帖准备先睡一觉。突然试了编译一下,没有错误了。先上源代码。

错误代码

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>
#define flag -1
typedef struct LNode
{
	int data;
	struct LNode *next;
}LNode;

int CreateLinkList(LNode **L)
{
	if (L == NULL)
	{
		return -1;
	}
	int x;
	LNode *s = NULL;
	scanf("%d", &x);
	while (x != flag)
	{
		s = (LNode *)malloc(sizeof(LNode));
		s->data = x;
		s->next = *L->next;
		*L->next = s;
		scanf("%d", &x);
	}
	return 0;
}

int PrintLinkList(LNode **L)
{
	if (L == NULL)
	{
		return -1;
	}
	LNode *p = *L->next;
	while (p != NULL)
	{
		printf("%d---", p->data);
		p = p->next;
	}
	return 0;
}

int main()
{
	LNode *L;
	L = (LNode *)malloc(sizeof(LNode));
	L->next = NULL;
	CreateLinkList(&L);
	PrintLinkList(&L);
	return 0;
}

编译器报错信息:

这个问题原因是操作符优先级的问题。->操作符优先级高于*操作符优先级,所以上面源代码需要把

L->next换成(*L)->next,问题就全部解决了。

展开阅读全文
打赏
0
0 收藏
分享
加载中
更多评论
打赏
0 评论
0 收藏
0
分享
返回顶部
顶部