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

【数据结构/C++】线性表_双链表基本操作

image.png

#include <iostream>
using namespace std;
typedef int ElemType;
// 3. 双链表
typedef struct DNode
{ElemType data;struct DNode *prior, *next;
} DNode, *DLinkList;
// 初始化带头结点
bool InitDNodeList(DLinkList &L)
{L = (DNode *)malloc(sizeof(DNode));if (L == NULL){return false;}L->prior = NULL;L->next = NULL;return true;
}
// 在第 i 个位置插入元素 e
bool InsertDNodeList(DLinkList &L, int i, ElemType e)
{DNode *p = L, *s;int j = 0;while (p != NULL && j < i - 1){p = p->next;j++;}if (p == NULL){cout << "插入位置不合法" << endl;return false;}s = (DNode *)malloc(sizeof(DNode));s->data = e;// 判断是否在空表中插入if (p->next == NULL){s->next = NULL;s->prior = p;p->next = s;return true;}else{s->next = p->next;s->prior = p;p->next->prior = s;p->next = s;return true;}
}
// 删除第 i 个元素,并返回元素 e
bool DeleteDNodeList(DLinkList &L, int i, ElemType &e)
{DNode *p = L, *q;int j = 0;while (p != NULL && j < i - 1){p = p->next;j++;}if (p == NULL){cout << "删除位置不合法" << endl;return false;}q = p->next;e = q->data;p->next = q->next;q->next->prior = p;free(q);return true;
}
// 遍历双链表
void TraverseDNodeList(DLinkList L)
{DNode *p = L->next;while (p != NULL){cout << p->data << " ";p = p->next;}cout << endl;
}
int main()
{DLinkList L;ElemType e;InitDNodeList(L);InsertDNodeList(L, 1, 1);InsertDNodeList(L, 2, 2);InsertDNodeList(L, 3, 3);TraverseDNodeList(L);DeleteDNodeList(L, 2, e);cout << "删除元素为:" << e << endl;TraverseDNodeList(L);return 0;
}

image.png

http://www.lryc.cn/news/246552.html

相关文章:

  • 前端已死?看看我的秋招上岸历程
  • Flink Flink中的合流
  • 工业园区重金属废水深度处理工程项目,稳定出水0.1mg/l
  • element table滚动条失效
  • 代码随想录算法训练营 ---第四十六天
  • MySQL-02-InnoDB存储引擎
  • Qt路径和Anaconda中QT路径冲突(ubuntu系统)
  • vue2.js添加水印
  • Eureka简单使用做微服务模块之间动态请求
  • 竞赛选题 题目:基于深度学习卷积神经网络的花卉识别 - 深度学习 机器视觉
  • css-tricks网站图例
  • Scrapy框架内置管道之图片视频和文件(一篇文章齐全)
  • Linux文件与路径
  • 【Qt】获取当前系统用户名:9种获取方式
  • ECMAScript2023你学习了吗?
  • 【从删库到跑路 | MySQL总结篇】数据库基础(增删改查的基本操作)
  • 【JMeter】配置元件
  • 数据采集静态存储SRAM芯片EMI7064
  • 网络运维与网络安全 学习笔记2023.11.27
  • ansible学习
  • 使用Kibana让es集群形象起来
  • 机器学习调参指南:提升模型性能的关键步骤
  • 图书管理系统源码,图书管理系统开发,图书借阅系统源码四TuShuManager应用程序MVC视图View
  • Visual Studio2010保姆式安装教程(VS2010 旗舰版),以及如何运行第一个C语言程序,超详细
  • 第四节HarmonyOS 熟知开发工具DevEco Studio
  • 安防视频监控/视频融合/云存储EasyCVR页面数据显示不全该如何解决?
  • vatee万腾的数字化奇点:Vatee科技的前沿创新之路
  • C#,《小白学程序》第六课:队列(Queue)其二,队列的应用,编写《实时叫号系统》
  • 打造数字人偶像的意义与影响
  • Spring加载Bean的多种方式