用单链表实现批量删除时出现了问题,请大佬看一下

LLYYYYY0 2018-04-21 09:18:51
#include <stdio.h>
#include <stdlib.h>

int i=1;
int x,y,n;
int *p,*q;
typedef struct LNode{
int data;
struct LNode *next;
}LNode,*LinkList;

//建立单链表
int CreatList_L(LinkList *L){
(*L)=(LinkList)malloc(sizeof(LNode));
(*L)->next=NULL;
for(i=1;i<=n;i++){
LinkList p=(LinkList)malloc(sizeof(LNode));
printf("\n请输入第%d个元素:",i);
scanf("%d",&p->data);
p->next=(*L)->next;
(*L)->next=p;
}
return 0;
}

//打印单链表
int PrintList_L(LinkList L){
LinkList p;
p=L->next;
while(p!=NULL){
printf("%3d",p->data);
p=p->next;
}
return 0;
}

//删除元素
void DeleteList_L(LinkList L){
LinkList p;
LinkList q=(LinkList)malloc(sizeof(LNode));
p=L;
i=1;
if(x>=y)
printf("输入错误");
while(p->next!=NULL){
q=p->next;
if((q!=NULL)&&(q->data>=x)&&(q->data<=y)){
p->next=q->next;
p=p->next;
free(q);
printf("\n第%d次删除后单链表的存储状态为:",i);
PrintList_L(L);
i++;
}
}

}

//释放单链表


int main(){
LinkList L;
printf("请输入想要创建的元素个数:");
scanf("%d",&n);
CreatList_L(&L);

printf("\n目前单链表的存储状态为:");
PrintList_L(L);

printf("\n请输入需要删除的元素值的范围:");
scanf("%d %d",&x,&y);
DeleteList_L(L);
printf("\n删除元素后单链表的存储状态为:");
PrintList_L(L);

return 0;
}


程序没有报错,但是运行有问题,到删除元素的步骤后就停住了后面的步骤无法进行,而且删除得不完整,好像十位数的还删不了。。。。。请问是什么问题呢?



...全文
630 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
nan12312 2018-12-19
  • 打赏
  • 举报
回复
楼上的答案不正确吧,这并没有真正的删除,只不过是结点后继跳过去了,而后面结点根本没有free掉
Isnis-fallen 2018-04-22
  • 打赏
  • 举报
回复

//删除元素
void DeleteList_L(LinkList L){
    LinkList p;
    LinkList q=(LinkList)malloc(sizeof(LNode));
    p=L;
    i=1;
    if(x>=y)
        printf("输入错误");
    while(p->next!=NULL){
        q=p->next;
        if((q!=NULL)&&(q->data>=x)&&(q->data<=y)){
			
            p->next=q->next;
            //p=p->next;
            
            printf("\n第%d次删除后单链表的存储状态为:",i);
            PrintList_L(L);
            i++;
        }
		else p=p->next; 
    }
	free(q);
	q=NULL;
}
LLYYYYY0 2018-04-22
  • 打赏
  • 举报
回复
太谢谢啦已经可以了~原来是自己的逻辑问题....十分感谢!
LLYYYYY0 2018-04-21
  • 打赏
  • 举报
回复
刚才看了那个帖子主要是排序的,而且是C++的,我的问题主要在批量删除这块,还有程序运行到一半就不动了是怎么回事呢?麻烦大佬再看看
赵4老师 2018-04-21
  • 打赏
  • 举报
回复
数据结构对单链表进行数据排序 http://bbs.csdn.net/topics/392201633

69,373

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧