
单向链表
发布日期:2021-05-14 16:43:27
浏览次数:14
分类:精选文章
本文共 1111 字,大约阅读时间需要 3 分钟。
双向链表数据结构代码实现
以下是基于双向链表数据结构的C++代码实现,能够支持头尾操作以及节点插入删除功能。
代码结构概述
-
数据结构定义
使用两个数组ne
和e
分别存储节点的前驱指针和元素值。常量N
设定为节点数量上限。 -
初始化函数
init()
函数用于初始化数据结构,初始化head
(头节点)指针为-1
,idx
(节点索引)为0
。 -
删除节点函数
dele(int k)
函数用于删除指定节点,具体实现为指向前一个节点。 -
添加到头部函数
add_to_head(int x)
函数用于将节点添加到链表头部。 -
节点插入函数
add(int k, int x)
函数用于在指定位置后插入新节点。 -
主函数逻辑
读取操作数量n
,然后根据操作类型执行相应操作。
操作说明
-
H 操作(添加到头部)
输入新节点值x
,调用add_to_head(x)
并输出添加成功提示。 -
D 操作(删除节点)
输入节点编号k
,如果k=0
(表示尾部节点),则删除尾部节点;否则删除前一个指向该节点的节点。 -
I 操作(插入节点)
输入节点编号k
和节点值x
,调用add(k-1, x)
并输出插入成功提示。
实现效果展示
在实际测试中,您可以按照以下步骤运行程序:
int main() { int n; init(); cin >> n; while (n--) { int k, x; char op; cin >> op; if (op == 'H') { cin >> x; add_to_head(x); } else if (op == 'D') { cin >> k; if (k == 0) head = ne[head]; else dele(k-1); } else if (op == 'I') { cin >> k >> x; add(k-1, x); } } for (int i = head; i != -1; i = ne[i]) { cout << " " << e[i]; } return 0;}
当所有操作完成后,程序会按照链表从头到尾的顺序输出所有节点信息。
发表评论
最新留言
关注你微信了!
[***.104.42.241]2025年04月23日 15时45分12秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
python中列表 元组 字典 集合的区别
2019-03-07
python struct 官方文档
2019-03-07
Android DEX加固方案与原理
2019-03-07
Android Retrofit2.0 上传单张图片和多张图片
2019-03-07
iOS_Runtime3_动态添加方法
2019-03-07
Leetcode第557题---翻转字符串中的单词
2019-03-07
Problem G. The Stones Game【取石子博弈 & 思维】
2019-03-07
Unable to execute dex: Multiple dex files
2019-03-07
Java多线程
2019-03-07
Unity监听日记
2019-03-07
AndroidStudio跳到错误位置
2019-03-07
openssl服务器证书操作
2019-03-07
expect 模拟交互 ftp 上传文件到指定目录下
2019-03-07
linux系统下双屏显示
2019-03-07
PDF.js —— vue项目中使用pdf.js显示pdf文件(流)
2019-03-07
我用wxPython搭建GUI量化系统之最小架构的运行
2019-03-07
我用wxPython搭建GUI量化系统之多只股票走势对比界面
2019-03-07
selenium+python之切换窗口
2019-03-07
重载和重写的区别:
2019-03-07
搭建Vue项目步骤
2019-03-07