C语言创建链表

startstorm 发布于 2017/03/02 13:33
阅读 128
收藏 0

我用的vs2013,准备写创建链表,输出链表的程序,但是出的错误我看不明白。

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

void CreateLinkList(LNode **L)
{
	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);
	}
}

void PrintLinkList(LNode **L)
{
	LNode *p = *L->next;
	while (p != NULL)
	{
		printf("%d", p->data);
		p = p->next;
	}
}

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

加载中
0
startstorm
startstorm

问题解决了,涉及到符号优先级的问题

->的优先级比*的优先级大

        s->next = (*L)->next;
        (*L)->next = s;
    LNode *p = (*L)->next;

改成这样就可以了。

0
startstorm
startstorm

引用来自“重光长老”的评论

问题解决了,涉及到符号优先级的问题

->的优先级比*的优先级大

        s->next = (*L)->next;
        (*L)->next = s;
    LNode *p = (*L)->next;

改成这样就可以了。

自己评论自己,第一次

0
GestureWei
GestureWei

一元运算符里面前置的优先级小于后置的,从编译角度来看从左到右形成的产生式系统,优先级就是反过来的

startstorm
startstorm
是的->操作符小于*操作符
返回顶部
顶部