大神们帮我看看这个代码问题出在那里?为什么删除的不是我想要的节点?
#include<stdio.h>typedef int ElemType;
typedef struct node
{
ElemType data;
struct Node *next;
}Node;
void creadnode(Node *h,int x)
{
Node *temp;
temp=(Node *)malloc(sizeof(Node));
temp->data=x;
temp->next=h->next;
h->next=temp;
}
void ListDelete(Node *L, int i)
{
Node *p, *q;
p = L;
while( p->next!=NULL && p->data!=i )
{
p = p->next;
q = p->next;
}
p->next = q->next;
free(q);
}
void main()
{
Node *head,*temp;
int a,b;
head=(Node *)malloc(sizeof(Node));
head->next=NULL;
printf("请输入链表元素,以'0'结束");
scanf("%d",&a);
while(a>0)
{
creadnode(head,a);
scanf("%d",&a);
}
printf("请输入要查找并删除的元素");
scanf("%d",&b);
ListDelete(head,b);
temp=head;
while(temp->next!=NULL)
{
temp=temp->next;
printf("%d ",temp->data);
}
} 看下图,你while循环结束的时候p和q停在的地方,你free错地方了
shuofxz 发表于 2018-4-29 18:33
看下图,你while循环结束的时候p和q停在的地方,你free错地方了
谢谢哈
charming321 发表于 2018-5-5 15:24
谢谢哈
如果问题解决了,记得选取最佳答案
页:
[1]