当前位置: 首页 > news >正文

数据结构-双链表

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

双链表的定义

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

双链表的代码实现

#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版本,没有什么特别不好理解的地方。

http://www.cnnetsun.cn/news/836237.html

相关文章:

  • 分布式系统概述
  • 计算机操作系统考试知识点及重点总结
  • ReportMachine收费解析:个人与团队版价格对比
  • picturebox怎么读取图片?支持哪些格式和加载方法
  • awk 设置多个分隔符教程,轻松处理复杂数据格式
  • 基于Java的市政工程规划智慧管理系统的设计与实现全方位解析:附毕设论文+源代码
  • TCRm 抗体酵母展示开发:突破靶向局限的免疫工具创新
  • 基于微信小程序的考研资源共享平台的设计与实现(源码+lw+部署文档+讲解等)
  • 狂揽144k Star!这款开源神器,让你拖拽就能开发AI应用
  • Wallpaper Generator:轻松打造专属纯色与渐变壁纸
  • 计算机毕业设计springboot在线音乐网站 基于Java Web的音乐资源管理数字化平台 SpringBoot架构下的智能音乐分享与播放系统
  • 孤能子视角:“认知心理学“
  • HBase与FastAPI:现代Python API开发
  • 生成引擎优化(GEO)推动内容创造与搜索表现提升的策略探讨
  • PCB真空层压工艺实操QA:半固化片适配与精准管控
  • 图片取模注意事项
  • XSS攻击零基础入门:原理、分类与简单复现
  • 自动雪深监测站 雪深监测系统
  • 27名员工人均月加班149小时,当当网旗下公司因员工超长加班被罚;理想内部会曝光:重启人形机器人;苹果发布第二代AirTag | 极客头条
  • RDMA设计37:RoCE v2 子系统模型设计
  • RDMA设计39:寄存器功能验证与分析2
  • 对话国产数据库如何对核心业务可靠支撑
  • 基于WebDAV协议的天翼云盘智能分享管理系统设计与实现
  • 中标通知:博冠8K中标华电风机叶片智能巡检项目
  • 【dz-1045】基于STM32的人体生理参数检测系统设计与实现
  • 【软件测试】5_性能测试实战 _性能测试用例设计
  • 【详解】使用java解决-打印出如下图案(菱形)
  • 2.1xue
  • 基于用户评论主题挖掘的旅游景点推荐系统
  • vue展示node express调用python解析tdms