蓝桥备赛(13)- 链表和 list(下)

一、动态链表 - list (了解)

new 和 delete 是非常耗时的操作
在算法比赛中,一般不会使使用 new 和 delete 去模拟实现一个链表。
而且STL 里面的 list 的底层就是动态实现的双向循环链表,增删会涉及 new 和 delete,效率不高,竞赛中一般不会使用,这里了解一下即可。

1.1 创建 list

包含头文件<list>  , 使用方法和vector 差不多

#include <iostream>
#include <cstdio>
#include <list>
using namespace std;int main()
{list<int> lt;//创建一个存储int 类型的链表 return 0;
}

1.2 push_front/push_back

1) push_front : 头插

2)push_back:尾插

时间复杂度:O(1)

#include <iostream>
#include <cstdio>
#include <list>
using namespace std;void print(list<int>& i)
{for(auto e:i){cout << e << " " ;}cout << endl;
}int main()
{list<int> lt;//创建一个存储int 类型的链表 //尾插for(int i = 1;i<=5 ;i++){lt.push_back(i); print(lt);} //头插for(int i = 1;i <= 5 ; i++){lt.push_front(i);print(lt); } return 0;
}

1.3 pop_front / pop_back

1)pop_front : 头删

2)pop_back:尾删

时间复杂度:O(1)

	  //头删for(int i = 1;i<=6 ; i++){lt.pop_front(); } print(lt);//尾删 for(int i = 1;i<=2;i++){lt.pop_back() ;}print(lt);

1.4 所有测试代码

#include <iostream>
#include <cstdio>
#include <list>
using namespace std;void print(list<int>& i)
{for(auto e:i){cout << e << " " ;}cout << endl;
}int main()
{list<int> lt;//创建一个存储int 类型的链表 //尾插for(int i = 1;i<=5 ;i++){lt.push_back(i); print(lt);} //头插for(int i = 1;i <= 5 ; i++){lt.push_front(i);print(lt); } //头删for(int i = 1;i<=6 ; i++){lt.pop_front(); } print(lt);//尾删 for(int i = 1;i<=2;i++){lt.pop_back() ;}print(lt);return 0;
}

二、算法题

2.1 排列顺序

B3630 排队顺序 - 洛谷

#include <iostream>
#include <cstdio>
using namespace std;const int N = 1e6 + 10;
int n,h;
int ne[N];int main()
{cin >> n;for(int i = 1;i<= n ; i++){cin >> ne[i];}cin >> h;//遍历链表for(int i = h;i;i = ne[i]){cout << i << " ";} return 0;
}

2.2 单向链表

#include <iostream>
#include <cstdio>
using namespace std;const int N = 1e5 + 10;
const int M = 1e6 + 10;//链表
int h,id,e[N],ne[N];
int mp[M];//mp[i]用来标记i 这个元素存储再什么位置 
int main()
{int q; cin >> q;//初始化id++;e[id] = 1;mp[1] = id; while(q--){int op,x,y;cin >> op >> x;int p = mp[x];//x 存的位置 if(op == 1)//尾部插入 {cin >> y;id++;e[id] = y;ne[id] = ne[p];ne[p] = id;mp[y] = id;//标记 y 这个位置 }else if(op == 2){cout << e[ne[p]] << endl;}else//删除 x 后面的元素 {ne[p] = ne[ne[p]];}}return 0;
}

2.3 队列安排

P1160 队列安排 - 洛谷

#include <iostream>
#include <cstdio>
using namespace std;const int N = 1e5 + 10;
//双向链表 
int pre[N],ne[N],h;int n,m;
bool st[N];//st[i] 表示 i 这个同学是否出队 
int main()
{cin >> n;//初始化pre[1] = h;ne[h] = 1;for(int i = 2;i<=n ; i++){int k,p;cin >> k >> p;if(p == 0){//i 放在 k 的左边ne[i] = k;pre[i] = pre[k];ne[pre[k]]	= i;pre[k] = i;}else//i 放在 k 的右边 {pre[i] = k;ne[i] = ne[k];pre[ne[k]] = i;ne[k] = i;}}cin >> m;while(m--){int x;cin >> x;if(st[x]) continue;ne[pre[x]] = ne[x];pre[ne[x]] = pre[x];st[x] = true;//表示X已经删除 }for(int i = ne[h];i ; i = ne[i]){cout << i << " ";}return 0;
} 

 

2.4 约瑟夫问题

P1996 约瑟夫问题 - 洛谷

#include <iostream>
#include <cstdio>
using namespace std;const int N = 110;
int n,m,ne[N];int main()
{cin >> n >> m;//创建循环链表for(int i = 1 ; i < n ; i++){ne[i] = i + 1;	} ne[n] = 1;//模拟游戏过程int t = n;for(int i = 1;i<=n;i++)//执行n次出圈操作 {for(int j = 1; j < m ; j++){t = ne[t];}cout << ne[t] << " ";ne[t] = ne[ne[t]];} 
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/30032.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

MySQL中like模糊查询如何优化?

大家好&#xff0c;我是锋哥。今天分享关于【MySQL中like模糊查询如何优化?】面试题。希望对大家有帮助&#xff1b; MySQL中like模糊查询如何优化? 1000道 互联网大厂Java工程师 精选面试题-Java资源分享网 在 MySQL 中&#xff0c;LIKE 模糊查询虽然非常常见&#xff0c;…

DeepSeek使用教程--让DeepSeek生成精准题库

想让DeepSeek出好题&#xff0c;关键在于提示词的设计。总结了一个基本模板&#xff1a; 请帮我生成一套关于[学科/知识点]的题目&#xff0c;包括[题型]&#xff0c;难度为[简单/中等/困难]&#xff0c;适合[年级/学习阶段]的学生&#xff0c;总共[数量]道题。每道题请提供详细…

字符串习题

单词个数统计 原作&#xff1a; 输入&#xff1a; 一行字符串。仅有空格和英文字母构成。 输出&#xff1a; 英文字母个数letter_num 单词个数word_num 出现最多的字母max_letter 出现最多的字母的出现次数max_letter_frequ 处理&#xff1a; 统计并输出此句子英文字母…

k8s概念及k8s集群部署(Centos7)

Centos7部署k8s集群 部署之前&#xff0c;先简单说下k8s是个啥&#xff1a; 一、k8s简介&#xff1a; k8s&#xff0c;全称&#xff1a;kubernetes&#xff0c;它可以看作是一个分布式系统支撑平台。k8s的作用&#xff1a; 1、故障自愈&#xff1a; k8s这个玩意可以监控容器…

牵引线标注:让地图信息更清晰的ArcGIS Pro技巧

在地图制作的世界里&#xff0c;标注的清晰度直接决定了地图的可读性和实用性。 今天&#xff0c;就让我们一同探索如何在ArcGIS Pro中巧妙地实现牵引线标注&#xff0c;为地图信息的呈现增添一份专业与清晰。 一、引言&#xff1a;牵引线标注的魅力 在地图制作中&#xff0…

VBA 数据库同一表的当前行与其他行的主键重复判断实现方案

目的&#xff0c;判断是否主键重复&#xff0c;不重复则登录新数据&#xff0c;重复则不登录。 定义类型&#xff1a; DataRecord   tableName 表名   rowNumber 行号   columnName 列名   data 数据 想要实现的代码逻辑如下&#xff1a; 模拟数据库的登录过程。假设…

Qt常用控件之树形QTreeWidget

树形QTreeWidget QTreeWidget 表示一个树形控件&#xff0c;里面的每一个元素&#xff0c;都是一个 QTreeWidgetItem 类型的对象&#xff0c;每个 QTreeWidgetItem 都可以包含多个文本和图标&#xff0c;每个文本或图标为一个列。 需要注意的是&#xff0c; QTreeWidget 向用…

java通用自研接口限流组件

某业务中需要对后端接口进行限流&#xff0c;我们可以直接引入阿里巴巴的Sentinel快速实现&#xff0c;但是某企业中出于安全考虑&#xff0c;需要部门自己研发一套&#xff0c;可以采用RedisLua脚本AOP反射自定义注解来实现 思路来源于链接 项目结构&#xff1a; 启动类&…

小程序事件系统 —— 33 事件传参 - data-*自定义数据

事件传参&#xff1a;在触发事件时&#xff0c;将一些数据作为参数传递给事件处理函数的过程&#xff0c;就是事件传参&#xff1b; 在微信小程序中&#xff0c;我们经常会在组件上添加一些自定义数据&#xff0c;然后在事件处理函数中获取这些自定义数据&#xff0c;从而完成…

【2025小黑课堂】计算机二级WPS精选系列20G内容(可下载:真题+预测卷+软件+选择题)

2025年3月全国计算机等级考试即将于3月29日至31日举行。为了帮助广大考生高效备考&#xff0c;小编特意收集并整理了最新版&#xff08;备考2025年3月&#xff09;的小黑课堂计算机二级WPS 电脑题库软件&#xff0c;助力考生在考试中游刃有余&#xff0c;轻松通关&#xff01; …

你会测量管道液体流阻吗?西-魏斯巴赫方程(Darcy-Weisbach Equation)、Colebrook-White 方程帮你

测量管道液体流阻需要测量以下关键量&#xff1a; 需要测量的量 压力差&#xff08;ΔP&#xff09;&#xff1a;管道入口和出口之间的压力差&#xff0c;通常通过压力传感器或差压计测量。流量&#xff08;Q&#xff09;&#xff1a;流经管道的液体体积流量&#xff0c;可通…

行为模式---中介者模式

概念 中介者模式是一种行为模式&#xff0c; 他的核心思想是通过引入一个中介者对象&#xff0c;将多个对象之间的复杂交互逻辑统一管理。每个对象只需要与中介者通信&#xff0c;而不需要直接与其他对象交互&#xff0c;从而降低系统的耦合度。 适用场景 对象之间交互复杂&…

可狱可囚的爬虫系列课程 18:成都在售新房数据爬虫(lxml 模块)实战

上一篇文章中带大家学习了 lxml 模块以及 XPath 语法&#xff0c;本文针对某网新房数据编写爬虫进行实战。 一、网页信息的获取 抓取地址&#xff1a;https://cd.fang.lianjia.com/loupan/ import requestsLink https://cd.fang.lianjia.com/loupan/ Headers {User-Agent: …

行为模式---迭代器模式

概念 迭代器模式是设计模式的行为模式&#xff0c;它的主要设计思想是提供一个可以操作聚合对象&#xff08;容器或者复杂数据类型&#xff09;表示&#xff08;迭代器类&#xff09;。通过迭代器类去访问操作聚合对象可以隐藏内部表示&#xff0c;也可以使客户端可以统一处理…

自定义组件渲染search框

1创建search分支 创建自定义组件 2.渲染my_search的基本结构 3.封装自定义属性和click事件 通过自定义属性增强组件的通用性 4.封装click事件 5.导航跳转 6.吸顶效果 7自动获得焦点与防抖效果 搜索页面搜索框基本结构 8实现搜索框自动获取焦点功能 9处理防抖效果

大语言模型学习--向量数据库基础知识

1.向量 向量是多维数据空间中的一个坐标点。 向量类型 图像向量 文本向量 语音向量 Embedding 非结构化数据转换为向量过程 通过深度学习训练&#xff0c;将真实世界离散数据&#xff0c;投影到高维数据空间上&#xff0c;通过数据在空间中间的距离体现真实世界的相似度 V…

JVM详解

目录 一.JVM的概念 1. 什么是JVM? 2.JVM用来干什么? 二JVM运行流程 JVM执⾏流程 2.1类加载机制 2.2类加载机制带来了哪些好处? 2.3类加载的过程是什么? 2.3.1加载 2.3.2验证 2.3.3准备阶段 2.3.4解析阶段 符号引⽤ 直接引⽤ 2.3.5初始化阶段 2.4类加载器 什么…

【JavaScript】08-作用域+箭头函数+解构赋值

本文以后的文章主要是介绍ES6语法。 目录 1.作用域 1.1 局部作用域 1.1.1 函数作用域 1.1.2 块作用域 1.2 全局作用域 1.3 作用域链 1.4 垃圾回收机制GC 1.4.1 内存生命周期 1.4.2 注意 1.4.3 内存泄漏 1.5 闭包 1.5.1 概念 1.5.2 闭包的作用 1.5.3 闭包应用 1.…

Mysql中的常用函数

1、datediff(date1,date2) date1减去date2&#xff0c;返回两个日期之间的天数。 SELECT DATEDIFF(2008-11-30,2008-11-29) AS DiffDate -- 返回1 SELECT DATEDIFF(2008-11-29,2008-11-30) AS DiffDate -- 返回-1 2、char_length(s) 返回字符串 s 的字符数 3、round(x,d)…

百度移动生态事业群聚焦UGC战略,贴吧迎新调整

易采游戏网3月8日独家消息&#xff1a;近日据内部消息人士透露&#xff0c;百度移动生态事业群正积极将用户生成内容&#xff08;UGC&#xff09;作为新的战略重点。此举标志着百度对UGC价值的重视与重塑&#xff0c;同时也预示着其旗下重要平台——百度贴吧将迎来一轮重大的调…