单向链表
发布日期:2021-05-14 16:43:27 浏览次数:14 分类:精选文章

本文共 1111 字,大约阅读时间需要 3 分钟。

双向链表数据结构代码实现

以下是基于双向链表数据结构的C++代码实现,能够支持头尾操作以及节点插入删除功能。

代码结构概述

  • 数据结构定义

    使用两个数组 nee 分别存储节点的前驱指针和元素值。常量 N 设定为节点数量上限。

  • 初始化函数

    init() 函数用于初始化数据结构,初始化 head(头节点)指针为 -1idx(节点索引)为 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秒