C++实现数组模拟链表(实现链表的增删功能)
代码如下:
#include <iostream>
using namespace std;
const int N = 100;struct Node
{int data;int next;
};class ArrayList
{private:Node node[N];int maxSize;//数组容量int idx;//接下来要插入的结点的下标int len;//链表长度public:void initList(){node[0].next = 0;//把0当做nullmaxSize = N;len = 0;}bool createList(int n)//创建初始链表{if (n > N - 1) return false;int x;for (int i = 0; i < n; i++){cin >> x;node[i].next = i + 1;node[i + 1].data = x;node[i + 1].next = 0;}idx = n+1;len = 5;return true;}bool insertList(int i, int e)//在i位置插入e{if (idx == maxSize) return false;if (i < 1 || i > len+1 ) return false;if (i == 1){node[idx].data = e;node[idx].next = 0;node[idx].next = node[0].next;node[0].next = idx;idx++;len++;return true;}int cnt = 0;for (int p = node[0].next; p != 0; p = node[p].next){cnt++;if (cnt == i - 1){node[idx].data = e;node[idx].next = 0;node[idx].next = node[p].next;node[p].next = idx;idx++;len++;return true;}}return true;}bool deleteList(int i, int &e)//删除i位置的元素,并把该元素的值返回给传入第二个位置的变量{if (i < 1 || i > len) return false;if (len == 0) return false;if (i == 1){node[0].next = node[node[0].next].next;len--;}int cnt = 0;for (int p = node[0].next; p != 0; p = node[p].next){cnt++;if (cnt == i - 1){node[p].next = node[node[p].next].next;len--;return true;}}return true;}int locateElem(int e)//返回e元素是链表的第几个元素{int cnt = 0;for (int i = node[0].next; i != 0; i = node[i].next){cnt++;if (node[i].data == e){return cnt;}}}bool isElem(int e)//判断元素e是否存在{for (int i = node[0].next; i != 0; i = node[i].next){if (node[i].data == e){return true;}}return false;}void printList()//输出链表{for (int i = node[0].next; i != 0; i = node[i].next){cout << node[i].data << " ";}cout << endl;}
};int main()
{ArrayList l;l.createList(5);l.insertList(1, 3);l.insertList(2, 6);int a;l.deleteList(1, a);l.deleteList(2, a);l.insertList(1, 3);l.insertList(2, 6);cout << l.isElem(33) << endl;cout << l.isElem(23) << endl;cout << l.locateElem(33) << endl;l.printList();return 0;
}
示例如下:
C++实现数组模拟链表(实现链表的增删功能)相关推荐
- POJ - 3476 A Game with Colored Balls---优先队列+链表(用数组模拟)
题目链接: https://cn.vjudge.net/problem/POJ-3476 题目大意: 一串长度为N的彩球,编号为1-N,每个球的颜色为R,G,B,给出它们的颜色,然后进行如下操作: 每 ...
- 链表 + 数组模拟链表
链表的指针实现 1.指针 #include<iostream> using namespace std; int main(){int a = 5;int *p; // int 型的指针d ...
- 数组模拟单链表acwing826. 单链表
文章目录 单链表一道题 数组模拟单链表模板 初始化链表 向表头插入数 在下标为k的节点的下一个位置插入节点 删除下标为k的节点的下一个节点 单链表一道题 单链表题目 实现一个单链表,链表初始为空,支持 ...
- C++ 静态链表(用数组模拟动态链表)
描述 主题:链表 功能:用数组模拟动态链表,分别实链表的插入.删除操作 提示:如果需要进入下一步操作,输入错误范围(如:0)即可 第一个元素的cur用于存放备用链表的第一个元素的下标 最后一个元素的c ...
- UVa - 11988 Broken Keyboard(数组模拟链表)
题目链接:http://acm.hust.edu.cn/vjudge/problem/viewProblem.action?id=18693 #include <iostream> #in ...
- 数组模拟链表原理解释
** 数组模拟链表原理解释(我觉得比我聪明的人应该都能看懂) ** 最近在学这个,上网搜相关内容多是代码还解释的不清楚,看着头痛,终于我顿悟了,我把我的理解写出来给大家分享一下(本人计较笨,可能写的过 ...
- 邻接表的两种实现(链表和数组模拟)
struct node {int v; //边的结束顶点 int w; //边的长度node* next; //指向以同一起点的下一条边的指针 }*first[N]; //first[u]指向以u为起 ...
- golang数据结构与算法——稀疏数组、队列和链表
文章目录 一 稀疏数组 1.1 先看一个实际的需求 1.2 稀疏数组基本介绍 1.3 稀疏数组举例说明 1.4 把数组转换为稀疏数组实现 1.5 把稀疏数组还原为原数组 二 队列 2.1 队列的介绍 ...
- Acwing算法基础课学习笔记(四)--数据结构之单链表双链表模拟栈模拟队列单调栈单调队列KMP
单链表 算法题中最常考的单链表就是邻接表(用来存储图和数),比如最短路问题,最小生成树问题,最大流问题.双链表用于优化某些问题. 利用数组来表达单链表:存储值和指针的两个数组利用下标进行关联. 需要注 ...
- 数组、ArrayList、链表、LinkedList
数组 数组 数组类型 不可重复 无序(线性查找) 可重复(找到第一个即可) 无序(线性查找) 不可重复 有序(二分查找) 可重复(找到第一个即可) 有序(二分查找) 插入 O(N) O(1) O( ...
最新文章
- 2022-2028年中国生物基塑料产业发展动态及投资前景分析报告
- mysql设置远程访问
- JAVA框架之Hibernate【配置文件详解】
- 小Z的房间[HEOI2015] (matrix-tree定理)
- USB转串口 FT232/PL2303/CH340 比较
- VTK:可视化之BoxClipUnstructuredGrid
- 免去架构算法调优,如何让你的系统风驰电掣?|图说
- 有2-3年工作经验但依然迷茫
- python程序gpu运行时间表_python gpu任务及时调度
- tnsnames.ora配置未生效_一文了解网络交换机的6种命令配置模式
- 原在一个tableView上应用不同类型的DTAttributedTextCell
- cudnn下载注意事项
- 手术导航系统原理简介、主要工作及应用
- selenium 清空缓存
- mysql 怎样更新数据库_MySQL数据库更新语句update使用详解
- 麻省理工公开课:线性代数视频总结(课1-2)
- h3c 抓包么 能通过debug_H3C debugging 使用技巧
- Cisco Packet Tracer 多区域OSPF配置实验
- shell+ftp+中文乱码_linux系统(本例为Centos)ftp上传中文名文件乱码或者显示问号解决方法 - 老牛博客...
- Linux智能家居m0代码,看过来!智能家居4大模块详解
热门文章
- 【ArcGIS遇上Python】栅格影像批量除以10000
- Android之BaseQuickAdapter(3.0.4版本)给子view添加点击事件(helper.addOnClickListener(view))的函数没了
- Android插件化开发之AMS与应用程序(客户端ActivityThread、Instrumentation、Activity)通信模型分析
- Andorid之华为手机开发模式不打印日志
- 【C语言简单说】十一:switch 补
- 娱乐项目和女朋友哪个重要?
- 当代大学查寝奇葩操作大赏 | 今日最佳
- 不用“背”单词,1个方法牢记7000单词:我是如何做到的?
- 逻辑回归算法背后的数学
- 1个月教你学会用Python实现机器学习