本人新手菜鸟一个,刚学数据结构,,写了一道单链表的删除操作问题的题,语法没有错,
就是起不了删除低i-1个结点的作用,感觉思路也没有错啊。。。有没有哪位大神能够指点指点,感激不尽,,,,
#include
#include
typedef struct linknode{
int data;
struct linknode *next;
}linknode;
void initlist(linknode *&l){
l=(linknode *)malloc(sizeof(linknode));
l->next=NULL;
}
void createlist(linknode *&l){
linknode *r,*s;
l=(linknode *)malloc(sizeof(linknode));
r=l;
int n,j;
scanf("%d",&n);
for(int i=0;i s=(linknode *)malloc(sizeof(linknode));
scanf("%d",&j);
s->data=j;
r->next=s;
r=s;
}
r->next=NULL;
}
bool deletelist(linknode *&l){
linknode *p=l,*q;
int i;
scanf("%d",&i);
if(i return false;
for(int j=0;j p=p->next;
}
q=p->next;
while(q!=NULL&&q->next!=NULL){
p->next=q->next;
free(q);
return true;
}
}
void destroy(linknode *&l){
linknode *pre=l,*p=l->next;
while(p!=NULL){
free(pre);
pre=p;
p=p->next;
}
free(pre);
}
void display(linknode *&l){
linknode *p=l->next;
while(p!=NULL){
printf("%d ",p->data);
p=p->next;
}
}
int main(){
linknode *l;
initlist(l);
createlist(l);
deletelist(l);
display(l);
destroy(l);
return 0;
}
1.代码放代码片里,否侧代码不完整
2.要让别人看代码就要写注释,不然一个一个猜你的功能么,有这时间都能自己重新写一个了
你这个代码的if和for都有格式错误,显示不完全。这段代码有问题
bool deletelist(linknode *&l){
linknode *p=l,*q;
int i;
scanf("%d",&i);
if(i return false;
for(int j=0;j p=p->next;
q=p->next;
while(q!=NULL&&q->next!=NULL){
p->next=q->next;
free(q);
return true;
}
}
为什么要求当前节点的next有值才能删,这样尾结点应该是删不掉的,不知道你测试的是删除随便一个节点还是尾结点。
其次你最好把整个运行结果都截图发上来,不然出错原因的可能性多了去了。