69,373
社区成员
发帖
与我相关
我的任务
分享
#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;
}
//删除元素
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;
}