求助,初学数据结构,为什么这一段代码会出现读取访问权限冲突(Delete—similar那里)?该怎么改?谢谢大佬!!所有LNode 前加struct我知道,但在VS里不加似乎也行。。。望大佬救救小白
#include<stdio.h>
#include<malloc.h>
struct LNode
{
int data;
LNode* next;
};
typedef LNode* LinkList;
LinkList Building()
{
LinkList p, head;
head = (LinkList)malloc(sizeof(LNode));
int x;
printf(“请输入数据:”);
scanf_s("%d", &x);
printf("\n");
head->next = NULL;
p = (LinkList)malloc(sizeof(LNode));
p->data = x;
p->next = head;
head->next = p;
while (x != 0)
{
p = (LinkList)malloc(sizeof(LNode));
p->data = x;
p->next = head->next;
head->next = p;
scanf_s("%d", &x);
}
return head;
}
void Show(LinkList L)
{
LinkList p;
p = L->next;
while (p != L)
{
printf(“数值为:%d\n”, p->data);
p = p->next;
}
}
void Delete(LinkList L)
{
LinkList p, r, o;
p = L;
while (p->next != L)
{
p = p->next;
}
o = p;
p = L;
while (p != o)
{
r = p->next;
free§;
printf(“已释放存储空间。\n”);
p = r;
}
free(o);
printf(“已释放存储空间。\n”);
}
LinkList Swap(LinkList L)
{
LinkList p, q, r, s;
p = L;
q = L->next;
r = q->next;
q->next = p;
while (r != L)
{
s = r->next;
r->next = p->next;
p->next = r;
r = s;
}
return L;
}
LinkList Delete_similar(LinkList L)
{
LinkList p, q, s;
p = q = L->next;
while (p != L)
{
while (q != L)
{
if (p->data == q->data)
{
s = q->next;
p->next = q->next;
free(q);
q = s;
}
else
{
q = q->next;
}
}
p = p->next;
}
return L;
}
int main()
{
LinkList L;
L = Building();
Show(L);
printf("-----------------\n");
Swap(L);
Show(L);
Delete_similar(L);
Show(L);
Delete(L);
return 0;
}