在一个带表头结点单链表中所有元素结点数据值无序排列,删除表中所有大于min小于max的元素(若存在)
1个回答
展开全部
我帮你写了个先输入建立链表,然后再输入min和max的值,执行删除函数,再输出结果:
example:
input:1 2 3 4 5 6 0
2 5
output:1 2 3 4 5 6
1 2 5 6
我的代码如下:
#include<stdio.h>
#include<malloc.h>
struct node
{
int data;
struct node * next;
};
struct node * create(void)
{
int temp;
struct node * head,*p1,*p2;
head=p1=(struct node *)malloc(sizeof(struct node));
printf("Please input the date end of 0:\n");
scanf("%d",&temp);
while(temp!=0)
{
p2=(struct node *)malloc(sizeof(struct node));
p2->data=temp;
p1->next=p2;
p1=p2;
scanf("%d",&temp);
}
p1->next=NULL;
return head;
}
struct node * del(struct node * p,int min,int max)
{
struct node *p1,*pro;
pro=p;
p1=p->next;
while(p1)
{
if(p1->data>min&&p1->data<max)
{
if(p1->next==NULL)
{
pro->next=NULL;
break;
}
else
{
pro->next=p1->next;
free(p1);
p1=pro->next;
}
}
else
{
pro=p1;
p1=p1->next;
}
}
return p;
}
void print(struct node * p)
{
struct node *p1;
p1=p->next;
while(p1)
{
printf("%d ",p1->data);
p1=p1->next;
}
}
int main()
{
struct node * head;
int min,max;
head=create();
print(head);
printf("\nPlease input the value of min and max:");
scanf("%d%d",&min,&max);
head=del(head,min,max);
print(head);
printf("\n");
return 0;
}
example:
input:1 2 3 4 5 6 0
2 5
output:1 2 3 4 5 6
1 2 5 6
我的代码如下:
#include<stdio.h>
#include<malloc.h>
struct node
{
int data;
struct node * next;
};
struct node * create(void)
{
int temp;
struct node * head,*p1,*p2;
head=p1=(struct node *)malloc(sizeof(struct node));
printf("Please input the date end of 0:\n");
scanf("%d",&temp);
while(temp!=0)
{
p2=(struct node *)malloc(sizeof(struct node));
p2->data=temp;
p1->next=p2;
p1=p2;
scanf("%d",&temp);
}
p1->next=NULL;
return head;
}
struct node * del(struct node * p,int min,int max)
{
struct node *p1,*pro;
pro=p;
p1=p->next;
while(p1)
{
if(p1->data>min&&p1->data<max)
{
if(p1->next==NULL)
{
pro->next=NULL;
break;
}
else
{
pro->next=p1->next;
free(p1);
p1=pro->next;
}
}
else
{
pro=p1;
p1=p1->next;
}
}
return p;
}
void print(struct node * p)
{
struct node *p1;
p1=p->next;
while(p1)
{
printf("%d ",p1->data);
p1=p1->next;
}
}
int main()
{
struct node * head;
int min,max;
head=create();
print(head);
printf("\nPlease input the value of min and max:");
scanf("%d%d",&min,&max);
head=del(head,min,max);
print(head);
printf("\n");
return 0;
}
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询