有大佬帮忙看看吗?
第25,26行一直报错说取消对NULL指针的引用,调试时卡在这里并且还会报访问权限冲突的错误
你的代码错误很多,代码修改如下:
#include <stdio.h>
#include <stdlib.h>
typedef int datatype;
typedef struct link_node
{
datatype info;
struct link_node* next;
}node,*linklist;
linklist createList()
{
datatype x;
linklist L;
char ch;
L = (linklist)malloc(sizeof(node));
if (L == NULL)
{
printf("error");
return 0;
}
linklist n,p;
p = L;
printf("请输入整数系列:\n"); //输入系列并以回车结束
while(1)
{
scanf_s("%d",&x,1);
n = (linklist)malloc(sizeof(node));
n->info = x;
n->next = NULL;
p->next = n;
p = n;
if( (ch=getchar()) == '\n') break;
}
return L;
}
void print(linklist head)
{
linklist p;
p = head->next;
while(p)
{
printf("%d ",p->info);
p = p->next;
}
printf("\n");
}
//翻转
linklist reverse(linklist head)
{
linklist p,t,k;
p = head->next;
t = p->next;
p->next = NULL;
while(t)
{
k = t->next;
head->next = t;
t->next = p;
p = t;
t = k;
}
return head;
}
//释放内存
void release(linklist head)
{
linklist p;
while(head)
{
p = head->next;
free(head);
head = p;
}
}
int main()
{
linklist head = createList();
print(head);
head = reverse(head);
printf("逆序后:");
print(head);
release(head);
return 0;
}
怎么说呢, 这段代码好多问题。
首先你想弄一个链表,但是你按数组的方式来分配了内存,这就不合逻辑了。
然后while循环里面, 你用x做条件,但是你在循环里面又不改变x的值,这样就死循环了。
还有循环里面的逻辑,我也看不太懂。
你再自己理理清楚吧,这样的没办法说清楚了