news 2026/6/19 22:19:21

数据结构-双链表

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
数据结构-双链表

双链表其实和单链表区别不大

双链表的定义

双链表其实就是前后都可以走的链表,常规的单链表无法通过后一个节点来找到前面的节点,但双链表的单个节点同时存储了前一个和后一个节点。这便让双链表可以进行双向搜索。双链表通过这种方法降低了搜索的复杂度(在特定情况下)。

双链表的代码实现

#include<iostream> #include<stdio.h> using namespace std; struct Node{ Node* pre; Node* next; int data; }; int main(){ //创建链表并连起来 Node* A = new Node(); Node* B = new Node(); A -> next = B; A -> pre = NULL; B -> next = NULL; B -> pre = A; A -> data = 1; B -> data = 2; //尝试输出 //正向输出 Node* current = A; printf("%d\n" , current -> data); current = current -> next; printf("%d\n\n" , current -> data); //反向输出 current = B; printf("%d\n" , current -> data); current = current -> pre; printf("%d\n" , current -> data); }

便于展示,我就不弄特别麻烦了

你也可以对双链表进行删除操作

#include<iostream> #include<stdio.h> using namespace std; struct Node{ Node* pre; Node* next; int data; }; int main(){ //创建链表并连起来 Node* A = new Node(); Node* B = new Node(); Node* C = new Node(); A -> next = B; A -> pre = NULL; B -> next = C; B -> pre = A; C -> next = NULL; C -> pre = B; A -> data = 1; B -> data = 2; C -> data = 3; int pos; scanf("%d" , &pos); Node* current = A; //把 current 定位到你想删除的位置 for(int i = 0 ; i < pos ; i++){ current = current -> next; if(current == NULL){ printf("Failed\n"); return 0; } } //temp是要删除的前面一个 Node* temp = current -> pre; temp -> next = current -> next; delete current; //输出 current = A; while(current != NULL){ printf("%d " , current -> data); current = current -> next; } }

简单演示了一下

总结

双链表其实就是单链表的PLUS版本,没有什么特别不好理解的地方。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/15 12:39:08

90%的老板用人翻车,问题究竟出在哪一步?

问&#xff1a;为什么大多数企业招聘效果不佳&#xff0c;用人频频"翻车"&#xff1f;核心痛点是什么&#xff1f;答&#xff1a;深度调研显示&#xff0c;90%的企业用人问题根源在于缺乏系统化的人才甄别工具&#xff0c;导致招聘决策过度依赖主观经验而非科学数据。…

作者头像 李华
网站建设 2026/6/15 15:33:40

AOP动态代理与静态织入区别详解,哪种方式更适合你的项目?

在软件开发中&#xff0c;AOP&#xff08;面向切面编程&#xff09;是解决横切关注点的重要技术。其中动态代理和静态织入是实现AOP的两种主要方式。作为长期应用这两种技术的架构师&#xff0c;我认为理解它们的区别和适用场景对设计健壮的系统至关重要。 AOP动态代理和静态织…

作者头像 李华
网站建设 2026/6/18 13:21:29

基于Java的市政工程勘察设计智慧管理系统的设计与实现全方位解析:附毕设论文+源代码

1. 为什么这个毕设项目值得你 pick ? 市政工程勘察设计智慧管理系统旨在提升传统管理模式的效率与准确性。相比常规系统&#xff0c;本项目聚焦于具体功能模块构建&#xff0c;如会员管理、字典管理和各类项目及任务管理等&#xff0c;从而实现数据录入快速准确且易于审核的功…

作者头像 李华
网站建设 2026/6/15 19:11:15

2026年国内低代码与AI应用构建工具选型指南

到了2026年&#xff0c;低代码工具早已不是简单的“拖拉拽”弄个表单那么简单了。随着AI Native&#xff08;AI原生&#xff09;趋势的深化&#xff0c;我们构建应用的方式发生了本质变化&#xff1a;以前是人去适应工具的操作逻辑&#xff0c;现在是工具通过AI来理解人的意图。…

作者头像 李华
网站建设 2026/6/19 17:44:56

什么是VDSL

文章目录VDSL和ADSL的区别VDSL工作系统VDSL速率VDSL应用场景有哪些VDSL技术演进VDSL&#xff08;超高速数字用户线路&#xff09;是一种基于传统电话铜线的高速宽带接入技术&#xff0c;属于xDSL&#xff08;数字用户线路&#xff09;家族的重要成员。VDSL旨在提供比早期ADSL&a…

作者头像 李华