复现ORB3-YOLO8项目记录

文章目录

  • 1.编译错误
    • 1.1 错误1
    • 1.2 错误2
    • 1.3 错误3
    • 1.4 错误4


1.编译错误

首先ORB-SLAM相关项目已经写过很多篇博客了,从ORB-SLAM2怎么运行,再到现在的项目。关于环境已经不想多说了

1.1 错误1

– DEPENDENCY_LIBS : /home/lvslam/ORB3-YOLO8/Thirdparty/fastdeploy-linux-x64-1.0.3/lib/libfastdeploy.so;/home/lvslam/ORB3-YOLO8/Thirdparty/fastdeploy-linux-x64-1.0.3/third_libs/install/onnxruntime/lib/libonnxruntime.so;/home/lvslam/ORB3-YOLO8/Thirdparty/fastdeploy-linux-x64-1.0.3/third_libs/install/paddle_inference/paddle/lib/libpaddle_inference.so;/home/lvslam/ORB3-YOLO8/Thirdparty/fastdeploy-linux-x64-1.0.4/third_libs/install/paddle_inference/third_party/install/mkldnn/lib/libmkldnn.so.0;/home/lvslam/ORB3-YOLO8/Thirdparty/fastdeploy-linux-x64-1.0.4/third_libs/install/paddle_inference/third_party/install/mklml/lib/libiomp5.so;/home/lvslam/ORB3-YOLO8/Thirdparty/fastdeploy-linux-x64-1.0.3/third_libs/install/openvino/runtime/lib/libopenvino.so;TBB::tbb;TBB::tbbmalloc;TBB::tbbmalloc_proxy;opencv_calib3d;opencv_core;opencv_dnn;opencv_features2d;opencv_flann;opencv_highgui;opencv_imgcodecs;opencv_imgproc;opencv_ml;opencv_objdetect;opencv_photo;opencv_stitching;opencv_video;opencv_videoio;opencv_shape;opencv_superres;opencv_videostab;/home/lvslam/ORB3-YOLO8/Thirdparty/fastdeploy-linux-x64-1.0.3/third_libs/install/fast_tokenizer/lib/libcore_tokenizers.so;/home/lvslam/ORB3-YOLO8/Thirdparty/fastdeploy-linux-x64-1.0.3/third_libs/install/paddle2onnx/lib/libpaddle2onnx.so
– BUILD TYPE:Release
– Compiling on Unix
– Configuring done
– Generating done
– Build files have been written to: /home/lvslam/ORB3-YOLO8/build [ 50%] Built target g2o make[2]: ***
没有规则可制作目标“…/Thirdparty/fastdeploy-linux-x64-1.0.3/lib/libfastdeploy.so”,由“…/lib/libORB_SLAM3.so”
需求。 停止。 make[1]: ***
[CMakeFiles/Makefile2:126:CMakeFiles/ORB_SLAM3.dir/all] 错误 2 make: ***
[Makefile:84:all] 错误 2

这个项目的博主没有说应该用哪个版本的fastdeploy-linux-x64-1.0.3,我就先下载了fastdeploy-linux-x64-1.0.3版本,但是编译不过去
经过测试换成fastdeploy-linux-x64-1.0.4即可!

1.2 错误2

[100%] Linking CXX executable …/Examples/RGB-D/rgbd_tum /usr/bin/ld:
warning: libopencv_video.so.3.4, needed by
…/Thirdparty/fastdeploy-linux-x64-1.0.4/lib/libfastdeploy.so, not
found (try using -rpath or -rpath-link) /usr/bin/ld: warning:
libopencv_highgui.so.3.4, needed by
…/Thirdparty/fastdeploy-linux-x64-1.0.4/lib/libfastdeploy.so, not
found (try using -rpath or -rpath-link) /usr/bin/ld: warning:
libopencv_videoio.so.3.4, needed by
…/Thirdparty/fastdeploy-linux-x64-1.0.4/lib/libfastdeploy.so, not
found (try using -rpath or -rpath-link) /usr/bin/ld: warning:
libopencv_imgcodecs.so.3.4, needed by
…/Thirdparty/fastdeploy-linux-x64-1.0.4/lib/libfastdeploy.so, not
found (try using -rpath or -rpath-link) /usr/bin/ld: warning:
libopencv_imgproc.so.3.4, needed by
…/Thirdparty/fastdeploy-linux-x64-1.0.4/lib/libfastdeploy.so, not
found (try using -rpath or -rpath-link) /usr/bin/ld: warning:
libopencv_core.so.3.4, needed by
…/Thirdparty/fastdeploy-linux-x64-1.0.4/lib/libfastdeploy.so, not
found (try using -rpath or -rpath-link) /usr/bin/ld:
CMakeFiles/rgbd_tum.dir/Examples/RGB-D/rgbd_tum.cc.o: in function
CpuInfer(std::__cxx11::basic_string<char, std::char_traits,
std::allocator > const&, std::__cxx11::basic_string<char,
std::char_traits, std::allocator >,
fastdeploy::vision::DetectionResult*)‘: rgbd_tum.cc:(.text+0xd93):
undefined reference to cv::imread(cv::String const&, int)’
/usr/bin/ld: rgbd_tum.cc:(.text+0xd9b): undefined reference to
cv::String::deallocate()’ /usr/bin/ld: rgbd_tum.cc:(.text+0x104a):
undefined reference to cv::String::allocate(unsigned long)’
/usr/bin/ld: CMakeFiles/rgbd_tum.dir/Examples/RGB-D/rgbd_tum.cc.o: in
function GpuInfer(std::__cxx11::basic_string<char,
std::char_traits, std::allocator > const&,
std::__cxx11::basic_string<char, std::char_traits,
std::allocator >, fastdeploy::vision::DetectionResult*)‘:
rgbd_tum.cc:(.text+0x153f): undefined reference to
cv::imread(cv::String const&, int)’ /usr/bin/ld:
rgbd_tum.cc:(.text+0x1547): undefined reference to
cv::String::deallocate()’ /usr/bin/ld: rgbd_tum.cc:(.text+0x17fa):
undefined reference to cv::String::allocate(unsigned long)’
/usr/bin/ld: CMakeFiles/rgbd_tum.dir/Examples/RGB-D/rgbd_tum.cc.o: in
function TrtInfer(std::__cxx11::basic_string<char,
std::char_traits, std::allocator > const&,
std::__cxx11::basic_string<char, std::char_traits,
std::allocator >, fastdeploy::vision::DetectionResult*)‘:
rgbd_tum.cc:(.text+0x1df5): undefined reference to
cv::imread(cv::String const&, int)’ /usr/bin/ld:
rgbd_tum.cc:(.text+0x1dfd): undefined reference to
cv::String::deallocate()’ /usr/bin/ld: rgbd_tum.cc:(.text+0x20ea):
undefined reference to cv::String::allocate(unsigned long)’
/usr/bin/ld: CMakeFiles/rgbd_tum.dir/Examples/RGB-D/rgbd_tum.cc.o: in
function CpuInfer(std::__cxx11::basic_string<char,
std::char_traits, std::allocator > const&,
std::__cxx11::basic_string<char, std::char_traits,
std::allocator >, fastdeploy::vision::DetectionResult*) [clone
.cold]‘: rgbd_tum.cc:(.text.unlikely+0x35d): undefined reference to
cv::String::deallocate()’ /usr/bin/ld:
CMakeFiles/rgbd_tum.dir/Examples/RGB-D/rgbd_tum.cc.o: in function
GpuInfer(std::_cxx11::basic_string<char, std::char_traits,
std::allocator > const&, std::cxx11::basic_string<char,
std::char_traits, std::allocator >,
fastdeploy::vision::DetectionResult*) [clone .cold]‘:
rgbd_tum.cc:(.text.unlikely+0x3b7): undefined reference to
cv::String::deallocate()’ /usr/bin/ld:
CMakeFiles/rgbd_tum.dir/Examples/RGB-D/rgbd_tum.cc.o: in function
TrtInfer(std::cxx11::basic_string<char, std::char_traits,
std::allocator > const&, std::cxx11::basic_string<char,
std::char_traits, std::allocator >,
fastdeploy::vision::DetectionResult*) [clone .cold]‘:
rgbd_tum.cc:(.text.unlikely+0x402): undefined reference to
cv::String::deallocate()’ /usr/bin/ld:
CMakeFiles/rgbd_tum.dir/Examples/RGB-D/rgbd_tum.cc.o: in function
main.cold’: rgbd_tum.cc:(.text.unlikely+0x5d1): undefined reference to
cv::String::deallocate()’ /usr/bin/ld:
rgbd_tum.cc:(.text.unlikely+0x628): undefined reference to
cv::String::deallocate()’ /usr/bin/ld:
CMakeFiles/rgbd_tum.dir/Examples/RGB-D/rgbd_tum.cc.o: in function
main’: rgbd_tum.cc:(.text.startup+0xc42): undefined reference to
cv::Mat::Mat()’ /usr/bin/ld: rgbd_tum.cc:(.text.startup+0xc4e):
undefined reference to cv::Mat::Mat()’ /usr/bin/ld:
rgbd_tum.cc:(.text.startup+0xe7c): undefined reference to
cv::imread(cv::String const&, int)’ /usr/bin/ld:
rgbd_tum.cc:(.text.startup+0xf55): undefined reference to
cv::String::deallocate()’ /usr/bin/ld:
rgbd_tum.cc:(.text.startup+0x1121): undefined reference to
cv::imread(cv::String const&, int)’ /usr/bin/ld:
rgbd_tum.cc:(.text.startup+0x120a): undefined reference to
cv::String::deallocate()’ /usr/bin/ld:
rgbd_tum.cc:(.text.startup+0x1e13): undefined reference to
cv::String::allocate(unsigned long)’ /usr/bin/ld:
rgbd_tum.cc:(.text.startup+0x1eb2): undefined reference to
cv::String::allocate(unsigned long)’ /usr/bin/ld:
…/Thirdparty/fastdeploy-linux-x64-1.0.4/lib/libfastdeploy.so:
undefined reference to cv::InputArray::InputArray(cv::MatExpr
const&)’ /usr/bin/ld: …/lib/libORB_SLAM3.so: undefined reference to
cv::getTextSize(cv::String const&, int, double, int, int*)’
/usr/bin/ld:
…/Thirdparty/fastdeploy-linux-x64-1.0.4/lib/libfastdeploy.so:
undefined reference to cv::rectangle(cv::Mat&, cv::Rect
,
cv::Scalar
const&, int, int, int)’ /usr/bin/ld:
…/Thirdparty/fastdeploy-linux-x64-1.0.4/lib/libfastdeploy.so:
undefined reference to cv::findContours(cv::InputOutputArray const&,
cv::OutputArray const&, cv::OutputArray const&, int, int,
cv::Point
)’ /usr/bin/ld: …/lib/libORB_SLAM3.so: undefined
reference to cv::Mat::Mat(int, int, int)’ /usr/bin/ld:
…/Thirdparty/fastdeploy-linux-x64-1.0.4/lib/libfastdeploy.so:
undefined reference to cv::fillPoly(cv::Mat&, cv::Point
const**,
int const*, int, cv::Scalar
const&, int, int,
cv::Point
)’ /usr/bin/ld:
…/Thirdparty/fastdeploy-linux-x64-1.0.4/lib/libfastdeploy.so:
undefined reference to cv::KalmanFilter::predict(cv::Mat const&)’
/usr/bin/ld:
…/Thirdparty/fastdeploy-linux-x64-1.0.4/lib/libfastdeploy.so:
undefined reference to cv::KalmanFilter::correct(cv::Mat const&)’
/usr/bin/ld: …/lib/libORB_SLAM3.so: undefined reference to
cv::read(cv::FileNode const&, cv::String&, cv::String const&)’
/usr/bin/ld: …/lib/libORB_SLAM3.so: undefined reference to
cv::putText(cv::InputOutputArray const&, cv::String const&,
cv::Point
, int, double, cv::Scalar
, int, int, bool)’
/usr/bin/ld: …/lib/libORB_SLAM3.so: undefined reference to
cv::OutputArray::create(int, int, int, int, bool, int) const’
/usr/bin/ld: …/lib/libORB_SLAM3.so: undefined reference to
cv::namedWindow(cv::String const&, int)’ /usr/bin/ld:
…/lib/libORB_SLAM3.so: undefined reference to
cv::write(cv::FileStorage&, cv::String const&, int)’ /usr/bin/ld:
…/lib/libORB_SLAM3.so: undefined reference to
cv::FileStorage::operator[](cv::String const&) const’ /usr/bin/ld:
…/lib/libORB_SLAM3.so: undefined reference to cv::Mat::Mat(int, int,
int, cv::Scalar
const&)’ /usr/bin/ld:
…/Thirdparty/fastdeploy-linux-x64-1.0.4/lib/libfastdeploy.so:
undefined reference to cv::getPerspectiveTransform(cv::Point

const*, cv::Point
const*)’ /usr/bin/ld:
…/lib/libORB_SLAM3.so: undefined reference to cv::error(int,
cv::String const&, char const*, char const*, int)’ /usr/bin/ld:
…/Thirdparty/fastdeploy-linux-x64-1.0.4/lib/libfastdeploy.so:
undefined reference to cv::KalmanFilter::KalmanFilter(int, int, int,
int)’ /usr/bin/ld: …/lib/libORB_SLAM3.so: undefined reference to
cv::operator<<(cv::FileStorage&, cv::String const&)’ /usr/bin/ld:
…/lib/libORB_SLAM3.so: undefined reference to cv::Mat::Mat()’
/usr/bin/ld: …/lib/libORB_SLAM3.so: undefined reference to
cv::Formatter::get(int)’ /usr/bin/ld: …/lib/libORB_SLAM3.so:
undefined reference to cv::write(cv::FileStorage&, cv::String const&,
double)’ /usr/bin/ld: …/lib/libORB_SLAM3.so: undefined reference to
cv::FileStorage::FileStorage(cv::String const&, int, cv::String
const&)’ /usr/bin/ld: …/lib/libORB_SLAM3.so: undefined reference to
cv::Mat::Mat(int, int, int)’ /usr/bin/ld: …/lib/libORB_SLAM3.so:
undefined reference to cv::Mat::Mat(cv::Size
, int)’ /usr/bin/ld:
…/Thirdparty/fastdeploy-linux-x64-1.0.4/lib/libfastdeploy.so:
undefined reference to cv::polylines(cv::Mat&, cv::Point
const*
const*, int const*, int, bool, cv::Scalar
const&, int, int,
int)’ /usr/bin/ld: …/lib/libORB_SLAM3.so: undefined reference to
cv::Mat::total() const’ /usr/bin/ld: …/lib/libORB_SLAM3.so: undefined
reference to cv::Mat::step1(int) const’ /usr/bin/ld:
…/lib/libORB_SLAM3.so: undefined reference to cv::imshow(cv::String
const&, cv::_InputArray const&)’ /usr/bin/ld:
…/Thirdparty/fastdeploy-linux-x64-1.0.4/lib/libfastdeploy.so:
undefined reference to cv::imwrite(cv::String const&, cv::_InputArray
const&, std::vector<int, std::allocator > const&)’ collect2:
error: ld returned 1 exit status make[2]: ***
[CMakeFiles/rgbd_tum.dir/build.make:133:…/Examples/RGB-D/rgbd_tum] 错误
1 make[1]: *** [CMakeFiles/Makefile2:99:CMakeFiles/rgbd_tum.dir/all]
错误 2 make: *** [Makefile:84:all] 错误 2

因为跑上一个项目我用的是OpenCv4.2的版本,所以更新了一些库,这里造成部分库缺失
所以只需要将OpenCv换成3.4.5版本即可,但是重新卸载OpenCv太过麻烦,所以我们可以安装多个版本的OpenCv。
跑不同项目切换不同版本即可!!
链接: OpenCv多版本共存的安装路径与切换使用

还要注意CMakeLists中的版本!!

1.3 错误3

在这里插入图片描述

./Examples/RGB-D/rgbd_tum: error while loading shared libraries: libonnxruntime.so.1.12.0: cannot open shared object file: No such file or directory

解决方法:
执行 source /path/to/fastdeploy-linux-xxx/fastdeploy_init.sh

source /home/lvslam/ORB3-YOLO8/Thirdparty/fastdeploy-linux-x64-1.0.4/fastdeploy_init.sh 

1.4 错误4

执行命令

./Examples/RGB-D/rgbd_tum Vocabulary/ORBvoc.txt Examples/RGB-D/TUM1.yaml /home/lvslam/ORB3-YOLO8/evaluation/rgbd_dataset_freiburg3_walking_xyz /home/lvslam/ORB3-YOLO8/evaluation/rgbd_dataset_freiburg3_walking_xyz/associations.txt cpu

在这里插入图片描述
这是找不到文件,我们需要在当前目录下建立一个model文件夹,然后把yolov8n.onnx放进去就可以了!
在这里插入图片描述
至此我们就又成功复现一个项目!

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

ActiveMQ-CVE-2023-46604

Apache ActiveMQ OpenWire 协议反序列化命令执行漏洞 OpenWire协议在ActiveMQ中被用于多语言客户端与服务端通信。在Apache ActvieMQ5.18.2版本以及以前&#xff0c;OpenWire协议通信过程中存在一处反序列化漏洞&#xff0c;该漏洞可以允许具有网络访问权限的远程攻击者通过操作…

数据库的学习(5)

题目&#xff1a; 1、新增员工表emp和部门表dept create table dept (deptl int,dept name varchar(11)) charsetutf8; create table emp (sid int,name varchar(11),age int,worktime start date,incoming int,dept2 int) charsetutf8; insert into dept values (101,财务), (…

推广员团队分红体系,促进销量,能者多得

商城系统推广员的作用是通过奖励吸引会员成为推广人员&#xff0c;商家后台设置功能体系商品分佣比例&#xff0c;其推广到私域里完成订单获得佣金提现&#xff0c;商家获得更多新订单和新客户。 虽然商家可以招募大量推广员&#xff0c;但对推广员自身来说佣金吸引下还是缺少…

股指期货存在的风险有哪些?

股指期货因其标的物的特殊性&#xff0c;其面临的风险类型十分复杂&#xff0c;主要面临的一般风险和特有风险如下&#xff1a; 一般风险 从风险是否可控的角度&#xff0c;可以划分为不可控风险和可控风险&#xff1b;从交易环节可分为代理风险、流动性风险、强制平仓风险&…

快捷工具(提升工作效率)

文章目录 一、notepad++设置转json1.下载插件二、截图工具(可以将截图并粘贴到窗口)1.下载安装软件:snipaste三、idea 日志控制台查找日志1.idea 安装插件:Grep console四、beyond compare 4项目工程比较工具1.浏览器下载安装。本地运行五、xampp快速部署本地mysql,tomacat1.浏…

微信视频号的视频怎么下载到本地?快速教你下载视频号视频

天来说说市面上常见的微信视频号视频下载工具&#xff0c;教大家快速下载视频号视频&#xff01; 方法一&#xff1a;缓存方法 该方法来源早期视频技术&#xff0c;因早期无法将大量视频通过网络存储&#xff0c;故而会有缓存视频文件到手机&#xff0c;其目的为了提高用户体验…

Win11 Anaconda3卸载与重装(20240714)

0&#xff0c;背景 系统为Win11&#xff0c;遇到了一些不好解决的错误&#xff0c;决定干脆直接卸载重装Anaconda 建议参考官方文档&#xff1a;Uninstalling Anaconda Distribution — Anaconda documentation 1&#xff0c;第一步-卸载软件 找到当前Anaconda安装的路径下…

Java实现数据结构——双链表

目录 一、前言 二、实现 2.1 类的创建 三、对链表操作实现 3.1 打印链表 3.2 插入数据 3.2.1 申请新节点 3.2.2 头插 ​编辑 3.2.3 尾插 3.2.4 链表长度 3.2.5 任意位置插入 3.3 删除数据 3.3.1 头删 3.3.2 尾删 3.3.3 删除指定位置数据 3.3.4 删除指定数据 3…

ensp实现ICMP重定向实验

1 概述 ICMP重定向报文是ICMP控制报文中的一种。在特定的情况下&#xff0c;当路由器检测到一台机器使用非优化路由的时候&#xff0c;它会向该主机发送一个ICMP重定向报文&#xff0c;请求主机改变路由。路由器也会把初始数据包向它的目的地转发。 2 实验复现 拓扑如下 PC1配…

Tomcat部署以及优化

1、tomcat tomcat是用java代码的程序&#xff0c;运行的是java的web服务器 tomcat和php一样都是用来处理动态页面&#xff0c;tomcat也可以做为web应用服务器&#xff0c;开源的 php处理.php为结尾的 tomcat 处理.jsp nginx 处理 .html 2、tomcat的特点和功能 1、servle…

如何将LLM 集成到自动化生产系统

关键词&#xff1a;自动化系统、自主系统、LLM、数字孪生、微服务、多智能体系统 在技术不断发展的背景下&#xff0c;自动化和自主系统这两个术语经常交织在一起&#xff0c;但在影响上有明显的不同。两者都涉及到使用技术执行任务&#xff0c;最小化或不需要人工干预&#x…

Re:从零开始的C++世界——(一)入门基础

文章目录 C发展历史1.命名空间1.1 namespace的价值1.2 namespace的定义1.3 命名空间使⽤ 2.C输⼊&输出3.缺省参数3.1 缺省参数的概念3.2 缺省参数的分类 4.函数重载5.引⽤5.1引⽤的概念和定义5.2 引⽤的特性5.3 const引⽤5.4 使用场景5.5 指针和引⽤的关系 6.内联函数6.1内…

linux_进程周边知识——理解冯诺依曼体系结构

前言&#xff1a; 本篇内容是为了让友友们较好地理解进程的概念&#xff0c; 而在真正了解进行概念之前&#xff0c; 要先了解一下冯诺依曼体系结构。 所以博主会先对冯诺伊曼体系结构进行解释&#xff0c; 然后再讲解进程的概念。 ps&#xff1a; 本篇内容适合了解一些linux指…

【redis操作语句】

1.数据库操作 redis默认有16个数据库&#xff0c;编号为0~15&#xff0c;且默认访问0号数据库 获取当前键值对数量:先set创建一个键值对,再用dbsize获取&#xff0c;flushdb清空再获取。 127.0.0.1:6379> set k1 v1 OK 127.0.0.1:6379> dbsize (integer) 1 127.0.0.1:…

opencv 中如何通过欧式距离估算实际距离(厘米)

1&#xff1a;这个方法个人测试觉得是正确的&#xff0c;误差较小&#xff0c;目前满足我当前的需求&#xff0c;如果方法不对&#xff0c;请大家评论&#xff0c;完善。 2&#xff1a;确保拍摄的参照物是垂直的&#xff0c;如果不垂直&#xff0c;就会有误差&#xff0c;不垂…

基于SpringBoot+Hadoop+python的物品租赁系统(带1w+文档)

基于SpringBootHadooppython的物品租赁系统(带1w文档) 基于SpringBootHadooppython的物品租赁系统(带1w文档) 物品租赁系统是电子、信息技术相结合&#xff0c;是一种必然的发展趋势。以互联网为基础&#xff0c;以服务于广大用户为目的&#xff0c;发展整体优势&#xff0c;扩…

Flutter实现局部刷新的几种方式

目录 前言 1.局部刷新的重要性 1.概念 2.重要性 2.局部刷新实现的几种方式 1.使用setState方法进行局部刷新 2.使用StatefulWidget和InheritedWidget局部刷新UI 3.ValueNotifier和ValueListenableBuilder 4.StreamBuilder 5.Provider 6.GetX 7.使用GlobalKey 前言 …

游戏三倍补帧工具 Lossless Scaling v2.9.0

运行时请将游戏窗口化或全屏 比如你的显示器是144hz 把游戏限制帧率到48帧后开启三倍补帧 允许撕裂和垂直同步一起来延迟更低 72,48,36&#xff0c;分别对应1/2&#xff0c;1/3&#xff0c;1/4&#xff0c;性能够的话&#xff08;补帧后满144fps&#xff09;就优先锁72fps&a…

自动驾驶中的人机互相接管问题讨论

一、背景 人机接管&#xff08;human takeover&#xff09;是指在自动驾驶过程中&#xff0c;当系统遇到超出其处理能力或预设安全阈值的情况时&#xff0c;将控制权交还给驾驶员的过程。这一环节的设计直接关系到自动驾驶技术的实用性与安全性&#xff0c;是目前研究和实践中…

深入解析双向链表与单向链表的区别:示例详解

文章目录 一、单向链表与双向链表的定义及结构二、单向链表与双向链表的区别示例插入操作删除操作 三、完整示例四、总结 链表是一种灵活的数据结构&#xff0c;它通过指针连接一系列节点&#xff0c;实现了动态数组的特性。在众多链表类型中&#xff0c;单向链表和双向链表是最…