已知线性表中的元素以值递增有序排列,并以单链表做存储结构。试写一高效的算法, 删除表中所有值大于 mink 且小于 maxk 的元素

本文主要是介绍已知线性表中的元素以值递增有序排列,并以单链表做存储结构。试写一高效的算法, 删除表中所有值大于 mink 且小于 maxk 的元素,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

时间复杂度为:O(n)

#include<iostream>
#include<stdio.h>
using namespace std;
typedef int Element;typedef struct Node{Element data;struct Node *next;
}LinkList;//初始化链表,带头节点,头插法
LinkList* init_headInsert(){LinkList *list,*head;list = (LinkList*)malloc(sizeof(LinkList));//list从头到尾都是指向的首地址list->next = NULL;for(int i=0;i<10;i++){  LinkList* s = (LinkList*)malloc(sizeof(LinkList));s->data = i;s->next = list->next;list->next = s; }while(list->next){cout<<list->next->data<<" ";list = list->next;}return list;
}//初始化链表,带头节点,尾插法
LinkList* init_rearInsert(){LinkList* rear;LinkList* list;list = (LinkList*)malloc(sizeof(LinkList));list->next = NULL;rear = list;for(int i=0;i<10;i++){LinkList *s = (LinkList*)malloc(sizeof(LinkList));s->data = i;rear->next = s;rear = s;}rear->next = NULL;//不赋值尾NULL,将会不断输出return list;
}
bool ListDelete(LinkList* L,Element mink,Element maxk){if(mink>maxk) return -1;LinkList* pre;LinkList* head = L;//L为头节点pre = L;L = L->next;while(L->data<mink){L = L->next;pre = pre->next;}//删除节点while(L->data<=maxk){LinkList* q = L;pre->next = L->next;L = L->next;free(q);}while(head->next){cout<<head->next->data<<" ";head = head->next;}return 1;
}int main(){Element mink = 1;Element maxk = 7;LinkList* list = init_rearInsert();ListDelete(list,mink,maxk);
}

这篇关于已知线性表中的元素以值递增有序排列,并以单链表做存储结构。试写一高效的算法, 删除表中所有值大于 mink 且小于 maxk 的元素的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/555655

相关文章

C#使用Spire.Doc for .NET实现HTML转Word的高效方案

《C#使用Spire.Docfor.NET实现HTML转Word的高效方案》在Web开发中,HTML内容的生成与处理是高频需求,然而,当用户需要将HTML页面或动态生成的HTML字符串转换为Wor... 目录引言一、html转Word的典型场景与挑战二、用 Spire.Doc 实现 HTML 转 Word1

Vite 打包目录结构自定义配置小结

《Vite打包目录结构自定义配置小结》在Vite工程开发中,默认打包后的dist目录资源常集中在asset目录下,不利于资源管理,本文基于Rollup配置原理,本文就来介绍一下通过Vite配置自定义... 目录一、实现原理二、具体配置步骤1. 基础配置文件2. 配置说明(1)js 资源分离(2)非 JS 资

MyBatis-plus处理存储json数据过程

《MyBatis-plus处理存储json数据过程》文章介绍MyBatis-Plus3.4.21处理对象与集合的差异:对象可用内置Handler配合autoResultMap,集合需自定义处理器继承F... 目录1、如果是对象2、如果需要转换的是List集合总结对象和集合分两种情况处理,目前我用的MP的版本

JavaScript中比较两个数组是否有相同元素(交集)的三种常用方法

《JavaScript中比较两个数组是否有相同元素(交集)的三种常用方法》:本文主要介绍JavaScript中比较两个数组是否有相同元素(交集)的三种常用方法,每种方法结合实例代码给大家介绍的非常... 目录引言:为什么"相等"判断如此重要?方法1:使用some()+includes()(适合小数组)方法2

Redis实现高效内存管理的示例代码

《Redis实现高效内存管理的示例代码》Redis内存管理是其核心功能之一,为了高效地利用内存,Redis采用了多种技术和策略,如优化的数据结构、内存分配策略、内存回收、数据压缩等,下面就来详细的介绍... 目录1. 内存分配策略jemalloc 的使用2. 数据压缩和编码ziplist示例代码3. 优化的

使用SpringBoot+InfluxDB实现高效数据存储与查询

《使用SpringBoot+InfluxDB实现高效数据存储与查询》InfluxDB是一个开源的时间序列数据库,特别适合处理带有时间戳的监控数据、指标数据等,下面详细介绍如何在SpringBoot项目... 目录1、项目介绍2、 InfluxDB 介绍3、Spring Boot 配置 InfluxDB4、I

C#高效实现Word文档内容查找与替换的6种方法

《C#高效实现Word文档内容查找与替换的6种方法》在日常文档处理工作中,尤其是面对大型Word文档时,手动查找、替换文本往往既耗时又容易出错,本文整理了C#查找与替换Word内容的6种方法,大家可以... 目录环境准备方法一:查找文本并替换为新文本方法二:使用正则表达式查找并替换文本方法三:将文本替换为图

Python如何实现高效的文件/目录比较

《Python如何实现高效的文件/目录比较》在系统维护、数据同步或版本控制场景中,我们经常需要比较两个目录的差异,本文将分享一下如何用Python实现高效的文件/目录比较,并灵活处理排除规则,希望对大... 目录案例一:基础目录比较与排除实现案例二:高性能大文件比较案例三:跨平台路径处理案例四:可视化差异报

Java整合Protocol Buffers实现高效数据序列化实践

《Java整合ProtocolBuffers实现高效数据序列化实践》ProtocolBuffers是Google开发的一种语言中立、平台中立、可扩展的结构化数据序列化机制,类似于XML但更小、更快... 目录一、Protocol Buffers简介1.1 什么是Protocol Buffers1.2 Pro

Java高效实现Word转PDF的完整指南

《Java高效实现Word转PDF的完整指南》这篇文章主要为大家详细介绍了如何用Spire.DocforJava库实现Word到PDF文档的快速转换,并解析其转换选项的灵活配置技巧,希望对大家有所帮助... 目录方法一:三步实现核心功能方法二:高级选项配置性能优化建议方法补充ASPose 实现方案Libre