代码如下:

#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++实现数组模拟链表(实现链表的增删功能)相关推荐

  1. POJ - 3476 A Game with Colored Balls---优先队列+链表(用数组模拟)

    题目链接: https://cn.vjudge.net/problem/POJ-3476 题目大意: 一串长度为N的彩球,编号为1-N,每个球的颜色为R,G,B,给出它们的颜色,然后进行如下操作: 每 ...

  2. 链表 + 数组模拟链表

    链表的指针实现 1.指针 #include<iostream> using namespace std; int main(){int a = 5;int *p; // int 型的指针d ...

  3. 数组模拟单链表acwing826. 单链表

    文章目录 单链表一道题 数组模拟单链表模板 初始化链表 向表头插入数 在下标为k的节点的下一个位置插入节点 删除下标为k的节点的下一个节点 单链表一道题 单链表题目 实现一个单链表,链表初始为空,支持 ...

  4. C++ 静态链表(用数组模拟动态链表)

    描述 主题:链表 功能:用数组模拟动态链表,分别实链表的插入.删除操作 提示:如果需要进入下一步操作,输入错误范围(如:0)即可 第一个元素的cur用于存放备用链表的第一个元素的下标 最后一个元素的c ...

  5. UVa - 11988 Broken Keyboard(数组模拟链表)

    题目链接:http://acm.hust.edu.cn/vjudge/problem/viewProblem.action?id=18693 #include <iostream> #in ...

  6. 数组模拟链表原理解释

    ** 数组模拟链表原理解释(我觉得比我聪明的人应该都能看懂) ** 最近在学这个,上网搜相关内容多是代码还解释的不清楚,看着头痛,终于我顿悟了,我把我的理解写出来给大家分享一下(本人计较笨,可能写的过 ...

  7. 邻接表的两种实现(链表和数组模拟)

    struct node {int v; //边的结束顶点 int w; //边的长度node* next; //指向以同一起点的下一条边的指针 }*first[N]; //first[u]指向以u为起 ...

  8. golang数据结构与算法——稀疏数组、队列和链表

    文章目录 一 稀疏数组 1.1 先看一个实际的需求 1.2 稀疏数组基本介绍 1.3 稀疏数组举例说明 1.4 把数组转换为稀疏数组实现 1.5 把稀疏数组还原为原数组 二 队列 2.1 队列的介绍 ...

  9. Acwing算法基础课学习笔记(四)--数据结构之单链表双链表模拟栈模拟队列单调栈单调队列KMP

    单链表 算法题中最常考的单链表就是邻接表(用来存储图和数),比如最短路问题,最小生成树问题,最大流问题.双链表用于优化某些问题. 利用数组来表达单链表:存储值和指针的两个数组利用下标进行关联. 需要注 ...

  10. 数组、ArrayList、链表、LinkedList

    数组   数组 数组类型 不可重复 无序(线性查找) 可重复(找到第一个即可) 无序(线性查找) 不可重复 有序(二分查找) 可重复(找到第一个即可) 有序(二分查找) 插入 O(N) O(1) O( ...

最新文章

  1. 2022-2028年中国生物基塑料产业发展动态及投资前景分析报告
  2. mysql设置远程访问
  3. JAVA框架之Hibernate【配置文件详解】
  4. 小Z的房间[HEOI2015] (matrix-tree定理)
  5. USB转串口 FT232/PL2303/CH340 比较
  6. VTK:可视化之BoxClipUnstructuredGrid
  7. 免去架构算法调优,如何让你的系统风驰电掣?|图说
  8. 有2-3年工作经验但依然迷茫
  9. python程序gpu运行时间表_python gpu任务及时调度
  10. tnsnames.ora配置未生效_一文了解网络交换机的6种命令配置模式
  11. 原在一个tableView上应用不同类型的DTAttributedTextCell
  12. cudnn下载注意事项
  13. 手术导航系统原理简介、主要工作及应用
  14. selenium 清空缓存
  15. mysql 怎样更新数据库_MySQL数据库更新语句update使用详解
  16. 麻省理工公开课:线性代数视频总结(课1-2)
  17. h3c 抓包么 能通过debug_H3C debugging 使用技巧
  18. Cisco Packet Tracer 多区域OSPF配置实验
  19. shell+ftp+中文乱码_linux系统(本例为Centos)ftp上传中文名文件乱码或者显示问号解决方法 - 老牛博客...
  20. Linux智能家居m0代码,看过来!智能家居4大模块详解

热门文章

  1. 【ArcGIS遇上Python】栅格影像批量除以10000
  2. Android之BaseQuickAdapter(3.0.4版本)给子view添加点击事件(helper.addOnClickListener(view))的函数没了
  3. Android插件化开发之AMS与应用程序(客户端ActivityThread、Instrumentation、Activity)通信模型分析
  4. Andorid之华为手机开发模式不打印日志
  5. 【C语言简单说】十一:switch 补
  6. 娱乐项目和女朋友哪个重要?
  7. 当代大学查寝奇葩操作大赏 | 今日最佳
  8. 不用“背”单词,1个方法牢记7000单词:我是如何做到的?
  9. 逻辑回归算法背后的数学
  10. 1个月教你学会用Python实现机器学习