读取访问权限冲突是什么意思

#include<stdio.h>
#include<stdlib.h>

#define NULL 0
//定义链表结点的结构体
typedef struct Node {
int data; //定义结点的数据域
struct Node* next; //定义结点的指针域,指针域为指到本类型的指针
}Node, * LinkList;
//声明函数
InitList(LinkList* L);
void CreateFromTail(LinkList L);
void LinkPrint(LinkList L);
//主函数
int main() {
int i;
LinkList L = { 0 };
InitList(&L); //链表的初始化
CreateFromTail(L); //创建链表
LinkPrint(L); //打印链表
}
//单链表的初始化
InitList(LinkList* L) {
*L = (LinkList)malloc(sizeof(Node)); //创建一个头结点
(*L)->next = NULL; //并使头结点的指针域为空
return L;

}
//单链表的创建
void CreateFromTail(LinkList L)
{
int flag = 1;
Node* r, * s;
char c;
r = L;
while (flag)
{
printf("请输入线性表元素:");
c = getchar();
if (c != '$')
{
s = (Node*)malloc(sizeof(Node));
s->data = c;
r->next = s;
r = s;
}
else {
flag = 0;
}
}
}
//打印出单链表
void LinkPrint(LinkList L) {
printf("线性表为:");
while (L)
{
printf("%c", L->next->data);
L = L->next;
}
}

img

L->next可能为Null

修改处见注释,供参考:

#include<stdio.h>
#include<stdlib.h>
#define NULL 0
//定义链表结点的结构体
typedef struct _Node {
    int    data; //定义结点的数据域
    struct _Node* next; //定义结点的指针域,指针域为指到本类型的指针
}Node, * LinkList;
//声明函数
InitList(LinkList* L);
void CreateFromTail(LinkList L);
void LinkPrint(LinkList L);
//主函数
int main() {
    int i;
    LinkList L = { 0 };
    InitList(&L); //链表的初始化
    CreateFromTail(L); //创建链表
    LinkPrint(L); //打印链表
  
    return 0;     //修改
}
//单链表的初始化
InitList(LinkList* L) {
    (*L) = (LinkList)malloc(sizeof(Node)); //创建一个头结点
    (*L)->next = NULL; //并使头结点的指针域为空
    //return L;   修改
}
//单链表的创建
void CreateFromTail(LinkList L)
{
    int flag = 1;
    Node* r, * s;
    char c;
    r = L;
    while (flag)
    {
        printf("请输入线性表元素:");
        c = getchar();
        getchar();         //修改
        if (c != '$')
        {
            s = (Node*)malloc(sizeof(Node));
            s->next = 0;   //修改
            s->data = c;
            r->next = s;
            r = s;
        }
        else {
            flag = 0;
        }
    }
}
//打印出单链表
void LinkPrint(LinkList L) {
    printf("线性表为:");
    while (L->next)//while (L) 修改
    {
         printf("%c", L->next->data);
         L = L->next;
    }
}