如何解决运行时错误:链接列表无法正确输出
问题:设计一种递归算法,以删除单链列表L中所有值为x的节点,而无需前导节点
问题:程序无法正确输出链接列表。问题是我首先创建了一个带有头节点的单链接列表,然后返回一个没有头节点要删除的单链接列表,但是删除后的函数DeleteX()在执行后无法正确输出>
#include <stdio.h>
#include <stdlib.h> // Use malloc()
#define ElemType int
typedef struct LNode {
ElemType data;
struct LNode* next;
} LNode;
LNode* Init_List();
LNode *Create_From_Tail(LNode* L3);
void DeleteX(LNode* L4,ElemType x2);
void Print_List(LNode* L5);
int main(int argc,char* argv[])
{
LNode* L;
ElemType x;
L = Init_List();
printf("Input a linklist end with -1: ");
L = Create_From_Tail(L);
printf("Input a being deleted data: ");
scanf_s("%d",&x);
DeleteX(L,x);
printf("Output a linklist: ");
Print_List(L);
return 0;
}
LNode* Init_List()
{
LNode* L2 = (LNode*)malloc(sizeof(LNode) * 1);
L2->next = NULL;
return L2;
}
LNode *Create_From_Tail(LNode* L3)
{
int i = 1;
int j;
LNode* r = L3;
while (i != 0) {
scanf_s("%d",&j);
if (j != -1) {
LNode* p = (LNode*)malloc(sizeof(LNode) * 1);
p->data = j;
r->next = p;
r = p;
}
else {
r->next = NULL;
i = 0;
}
}
return L3->next;
}
void DeleteX(LNode* L4,ElemType x2)
{
LNode* s;
if (L4 == NULL) {
return;
}
if (L4->data == x2) {
s = L4;
L4 = L4->next;
free(s);
DeleteX(L4,x2);
}
else {
L4 = L4->next;
DeleteX(L4,x2);
}
}
void Print_List(LNode* L5)
{
while (L5 != NULL) {
printf("%d ",L5->data);
L5 = L5->next;
}
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。