我是靠谱客的博主 野性心锁,最近开发中收集的这篇文章主要介绍删除单链表中的元素:删除表中值大于min且小于max的节点,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

题目:已知单链表L(带头节点)是一个递增有序表,试编写一算法,删除表中值大于min且小于max的节点(若表中有这样的节点),同时释放被删节点的空间,这里min和max是两个给定参数。

【输入形式】

首先输入正整数T,表示有T组测试数据。输入整数len定义链表长度,然后递增地给出链表的值。接着输入正整数q,表示进行q次操作,每次操作输入一个整数type表示操作类型:输入1,表示输出链表; 输入2, 表示删除链表;在选择删除时同时输入min 和 max的值表示删除范围。例如:输入2 2 4,表示删除大于2小于4的值。最后再次输入1,输出删除元素后的单链表。

【输出形式】     输出建立的单链表和删除元素后的单链表。

【样例输入】

1

5

1 2 3 4 5

3

1

2 2 4

1
【样例输出】

1 2 3 4 5

1 2 4 5

思路:

遍历整个链表的节点的同时判断元素的值是否符合删除条件(x<max&&x>min,若符合,删除节点并释放。若不符合,指针指向下个节点继续判断直到结束。当全部节点完成后,带回新的L

代码实现:

//删除单链表中值大于min且小于max的节点

#include<stdio.h>
#include <stdlib.h>

typedef struct Node
{
	int data;
	struct Node * next;
	
}Node;

typedef Node * LinkList;


//初始化链表 
LinkList CreateList()
{
	int T;
	scanf("%d",&T);
	LinkList L;
	LinkList p;
	LinkList r;
	int x;
	int i;
	int len;
	r=L=(LinkList)malloc(sizeof(Node));
	L->next=NULL;
	scanf("%d",&len);
	for(i=0;i<len;i++)
	{
		scanf("%d",&x);
		p=(LinkList)malloc(sizeof(Node));
		p->data=x;
		p->next=NULL;
		r->next=p;
		r=p;	
	}
	return L;	
}

//输出链表的元素 
void Printlist(LinkList L)
{
	LinkList p;
	p = L;
	while(p->next!=NULL)
	{
		p = p->next;
		printf("%d ",p->data);
	}
}

//删除大于min小于max的元素
LinkList DeleteList(LinkList L,int min,int max,int len)
{
	LinkList p,s;
	s=L;
	p=L->next;
	while(p!=NULL)
	{
		if(p->data>min&&p->data<max)
		{
			LinkList del;
			del=p;
			s->next=p->next;
			free(del);
			p=s->next;
		}
		else
		{
			s=s->next;
			p=p->next;
		}		
	}
    return L;		
}



int main()
{
	LinkList L;
	L=CreateList();
	int len;
	
    int q;
	scanf("%d",&q);
	
    int do1;
	scanf("%d",&do1);
	
    int do2;
	scanf("%d",&do2);
	
    int min,max;
	scanf("%d",&min);
	scanf("%d",&max);
	
    int do3;
	scanf("%d",&do3);
	
	if(do1==1)
	Printlist(L);
	if(do2==2)
	{
		int j=0;
		DeleteList(L,min,max,j,len);
		if(do3==1)
		printf("n");
		Printlist(L);
	}
	return 0;	
}


//CSDN ID: henry_moon
//欢迎大家关注我!

最后

以上就是野性心锁为你收集整理的删除单链表中的元素:删除表中值大于min且小于max的节点的全部内容,希望文章能够帮你解决删除单链表中的元素:删除表中值大于min且小于max的节点所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(51)

评论列表共有 0 条评论

立即
投稿
返回
顶部