#include<stdio.h>
#include<stdlib.h>
typedef struct Node
{
int data;
struct Node *next;
} Llink;
Llink *Creatb(Llink *l){
Llink p;
p=(Llink)malloc(sizeof(Llink));
p->next=NULL;
l=p;
return l;
}
void Getb(Llink *l,int n)
{
Llink *q;
q=l;
for(int i=0;i<n;i++)
{
Llink *p;
p=(Llink*)malloc(sizeof(Llink));
scanf("%d",&p->data);
p->next=NULL;
q->next=p;
q=p;
}
}
void Deletb(Llink *l,int n)
{
Llink *q;
q=l;
while(q->next){
if(q->next->data==n){
Llink *p;
p=l->next;
q->next=p->next;
free(p);
}
q=q->next;
}
}
void Putb(Llink *l)
{
while(l->next)
{
printf("%d",l->data);
l=l->next;
}
}
int main()
{
Llink *l;
l=Creatb(l);
int a;
scanf("%d",&a);
Getb(l,a);
int n;
scanf("%d",&n);
Deletb(l,n);
Putb(l);
}
我这个代码哪里不对吗?请各位指教
修改处见注释,供参考:
#include<stdio.h>
#include<stdlib.h>
typedef struct Node
{
int data;
struct Node *next;
}Llink;
Llink *Creatb(){ //Llink *Creatb(Llink *l) 修改
Llink *p;
p=(Llink*)malloc(sizeof(Llink));
p->next=NULL;
//l=p; 修改
return p; //修改
}
void Getb(Llink *l,int n)
{
Llink *q;
q=l;
for(int i=0;i<n;i++)
{
Llink *p;
p=(Llink*)malloc(sizeof(Llink));
scanf("%d",&p->data);
p->next=NULL;
q->next=p;
q=p;
}
}
void Deletb(Llink *l,int n)
{
Llink *q;
q=l;
while(q->next){
if(q->next->data==n){
Llink *p;
p=q->next; // p=l->next; 修改
q->next=p->next;
free(p);
}
else //修改
q=q->next;
}
}
void Putb(Llink *l)
{
while(l->next)
{
printf("%d ",l->next->data); //printf("%d",l->data); 修改
l=l->next;
}
}
int main()
{
Llink *l;
l=Creatb(); //l=Creatb(l); 修改
int a;
scanf("%d",&a);
Getb(l,a);
int n;
scanf("%d",&n);
Deletb(l,n);
Putb(l);
return 0;
}