A : DS单链表--类实现
Description
用C++语言和类实现单链表,含头结点
属性包括:data数据域、next指针域
操作包括:插入、删除、查找
注意:单链表不是数组,所以位置从1开始对应首结点,头结点不放数据
类定义参考
#include<iostream>
using namespace std;
#define ok 0
#define error -1// 链表结点定义
class ListNode
{
public:int data;ListNode *next;ListNode() {next = NULL;}
};
// 带头结点的单链表类定义
class LinkList
{
public:ListNode *head;int len;// 操作定义LinkList();~LinkList();ListNode *LL_index(int i); // 返回第i个结点的指针,如果不存在返回NULLint LL_get(int i); // 获取第i个元素的数据int LL_insert(int i, int item); // 把数值item插入第i个位置int LL_del(int i); // 删除第i个结点void LL_display(); // 输出单链表的内容
};
LinkList::LinkList()
{head = new ListNode();len = 0;
}
LinkList::~LinkList()
{ListNode *p, *q;p = head;while(p != NULL){q = p;p = p->next;delete q;}len = 0;head = NULL;
}
void LinkList::LL_display()
{ListNode *p;p = head->next;while(p){cout << p->data << ' ';p = p->next;}cout << endl;
}
Input
- 第1行先输入n表示有n个数据,接着输入n个数据
- 第2行输入要插入的位置和新数据
- 第3行输入要插入的位置和新数据
- 第4行输入要删除的位置
- 第5行输入要删除的位置
- 第6行输入要查找的位置
- 第7行输入要查找的位置
Output
数据之间用空格隔开,
第1行输出创建后的单链表的数据
每成功执行一次操作(插入或删除),输出执行后的单链表数据
每成功执行一次查找,输出查找到的数据
如果执行操作失败(包括插入、删除、查找等失败),输出字符串error,不必输出单链表
Sample
#0
Input
Copy
6 11 22 33 44 55 66 3 777 1 888 1 11 0 5
Output
Copy
11 22 33 44 55 66 11 22 777 33 44 55 66 888 11 22 777 33 44 55 66 11 22 777 33 44 55 66 error error 44
#include<iostream>
using namespace std;
#define ok 0
#define error -1// 链表结点定义
class ListNode
{
public:int data;ListNode* next;ListNode() { next = NULL; }
};
// 带头结点的单链表类定义
class LinkList
{
public:ListNode* head;int len;// 操作定义LinkList();~LinkList();ListNode* LL_index(int i); // 返回第i个结点的指针,如果不存在返回NULLint LL_get(int i); // 获取第i个元素的数据int LL_insert(int i, int item); // 把数值item插入第i个位置int LL_del(int i); // 删除第i个结点void LL_display(); // 输出单链表的内容
};
LinkList::LinkList()
{head = new ListNode();len = 0;
}
LinkList::~LinkList()
{ListNode* p, * q;p = head;while (p != NULL){q = p;p = p->next;delete q;}len = 0;head = NULL;
}
void LinkList::LL_display()
{ListNode* p;p = head->next;while (p){cout << p->data << ' ';p = p->next;}cout << endl;
}// 返回第i个结点的指针,如果不存在返回NULL 找链表第i个结点
ListNode* LinkList::LL_index(int i)
{int j = 0;ListNode* p = head;//指向头指针while (p && j < i)//遍历{p = p->next;j++;}if (!p) return NULL;else return p;
}//获得数据 获取第i个元素的数据
int LinkList::LL_get(int i)
{if (i <= 0 || i > len) return error;int j = 0;ListNode* p = head;//指向头指针 while (p && j < i)//遍历{p = p->next;j++;}if (!p) return error;else return p->data;
}//插入
int LinkList::LL_insert(int i, int item)
{//判断存在if (i <= 0 || i > len + 1) return error;ListNode* p, * s;p = LL_index(i - 1);//p是第i-1的结点s = new ListNode();//动态创建一个名为ListNode的新节点,并将其地址赋值给指针变量s。s->data = item;//s数据赋值s->next = p->next;//s的下一位 等于 p的下一位 s过后是i 也就是s指向链表第i位p->next = s;//p指向s p的下一位是s p过后是s len++;return ok;
}//删除
int LinkList::LL_del(int i)
{if (i <= 0 || i > len) return error;ListNode* p, * s;p = LL_index(i - 1);//p是链表第i-1s = p->next;//s是p的下一位 s是ip->next = s->next;//p的下一位 是s的下一位 p过后是i+1//这样子就跳过了idelete s;len--;return ok;
}int main()
{int n,m;LinkList mylist;cin >> n;for (int i = 1; i <= n; i++){cin >> m;mylist.LL_insert(i, m);//插入}//输出mylist.LL_display();//第2行输入要插入的位置和新数据cin >> n >> m;if( mylist.LL_insert(n, m)!= -1)mylist.LL_display();else cout << "error" << endl;//第2行输入要插入的位置和新数据cin >> n >> m;if (mylist.LL_insert(n, m) != -1)mylist.LL_display();else cout << "error" << endl;//第4行输入要删除的位置cin >> n;if (mylist.LL_del(n) != -1)mylist.LL_display();else cout << "error" << endl;//第4行输入要删除的位置cin >> n;if (mylist.LL_del(n) != -1)mylist.LL_display();else cout << "error" << endl;//第6行输入要查找的位置cin >> n;if (mylist.LL_get(n) != -1)cout << mylist.LL_get(n);else cout << "error" << endl;//第6行输入要查找的位置cin >> n;if (mylist.LL_get(n) != -1)cout << mylist.LL_get(n);else cout << "error" << endl;}
相关文章:
A : DS单链表--类实现
Description 用C语言和类实现单链表,含头结点 属性包括:data数据域、next指针域 操作包括:插入、删除、查找 注意:单链表不是数组,所以位置从1开始对应首结点,头结点不放数据 类定义参考 #include<…...
React Hooks —— ref hooks
什么是Hooks Hooks从语法上来说是一些函数。这些函数可以用于在函数组件中引入状态管理和生命周期方法。 React Hooks的优点 简洁 从语法上来说,写的代码少了上手非常简单 基于函数式编程理念,只需要掌握一些JavaScript基础知识与生命周期相关的知识不…...
泛型与Gson解析
/*** 回调接口的一种实现* 用于把网络返回的json字符串转换成参数化类型* 泛型 T 就是用户输入的javaBean的类型*/ public abstract class HttpCallback<T> implements ICallback {Overridepublic void onSuccess (String result) {// result就是网络回来的数据// 把这个…...
c++使用ifstream和ofstream报错:不允许使用不完整的类型
学习《C Primer》关于IO库的部分,输入284页的的代码,出现了报错: 不允许使用不完整的类型 原来的代码: #include <iostream> #include <vector> using namespace std;int main(int argc, char **argv) {ifstream in…...
调试器通用波形显示工具
前言:事情起因是我们实验室买了个无线调试器是CMSIS-DAP的,无法使用J-SCOPE显示波形来方便调PID,所以我就在网上找到了个开源工具链接:http://t.csdnimg.cn/ZqZPY使用方法:工具是好工具,就是没有使用手册&a…...
Linux中getopt函数、optind等变量使用详解
getopt函数、optind等变量使用详解 最近在学习《Unix网络编程》vol2时,发现书中例子经常使用一个命令行解析getopt函数,因为函数声明比较特别,根据自己摸索,遂总结出使用方法。 1. getopt函数的声明 该函数是由Unix标准库提供的…...
RDP协议流程详解(二)Basic Settings Exchange 阶段
RDP连接建立过程,在Connection Initiation后,RDP客户端和服务端将进行双方基础配置信息交换,也就是basic settings exchange阶段。在此阶段,将包含两条消息Client MCS Connect Initial PDU和Server MCS Connect Response PDU&…...
实时人脸五观检测:基于libfacedetection(CNN模型)
一、前言 随着人工智能技术的不断发展,人脸检测已成为计算机视觉领域的重要应用之一。人脸检测是一种将输入图像中的人脸位置和轮廓提取出来的技术,广泛应用于人脸识别、智能监控、人机交互等领域。利用libfacedetection开源的人脸检测库,实现人脸检测。 libfacedetection…...
图像和视频上传平台Share Me
本文完成于 6 月,所以反代中,域名演示还是使用的 laosu.ml,不过版本并没有什么变化; 什么是 Share Me ? Share Me 是使用 Next.js 和 PocketBase 的自托管图像和视频上传平台,具有丰富的嵌入支持和 API&…...
JavaScript 在前端开发中有什么应用?
JavaScript(简称JS)是一种脚本语言,广泛应用于前端开发中。作为Web前端三大基石之一(HTML、CSS、JS),它可以使网页具备交互性、动态性和实时性,提高用户体验。在本文中,我将详细论述…...
【沐风老师】推荐2023年3DMAX的10个最佳插件!
推荐2023年3DMAX的10个最佳插件 3dMax是一款专业的三维建模、动画和渲染软件,供建筑师、工程师、游戏开发商和视觉效果艺术家使用。它提供了一系列用于建模、纹理、装配、动画和渲染3D对象和场景的工具。3ds Max包括粒子和流体模拟的高级功能,以及对各种…...
【visual studio 小技巧】项目属性->生成->事件
需求 我们有时会用到一些dll,需要把这些dll和我们生成的exe放到一起,一般我们是手动自己copy, 这样发布的时候,有时会忘记拷贝这个dll,导致程序运行出错。学会这个小技巧,就能实现自动copy,非…...
每日一题 279完全平方数(完全背包)
题目 完全平方数 给你一个整数 n ,返回 和为 n 的完全平方数的最少数量 。 完全平方数 是一个整数,其值等于另一个整数的平方;换句话说,其值等于一个整数自乘的积。例如,1、4、9 和 16 都是完全平方数,而…...
创意中秋与国庆贺卡 - 用代码为节日增添喜悦
目录 编辑 引言 贺卡的初始主题 - 中秋节 点击头像,切换至国庆主题 文本动画 用代码制作这个贺卡 获取完整代码(简单免费) 总结 引言 中秋佳节和国庆日是中国两个重要的传统节日,一个寓意团圆与祝福,另一个…...
专业综合课程设计 - 优阅书城项目(第一版)
此项目是《专业综合课程设计》带练项目 实现的功能有: 登录、注销、添加图书、删除图书、编辑图书 包含资源: 优阅书城(bookstore)源码 数据库数据 课程笔记 下载链接:https://wwpv.lanzoue.com/i79nx1av4doj 登录功…...
【剑指Offer】13.机器人的运动范围
题目 地上有一个 rows 行和 cols 列的方格。坐标从 [0,0] 到 [rows-1,cols-1] 。一个机器人从坐标 [0,0] 的格子开始移动,每一次只能向左,右,上,下四个方向移动一格,但是不能进入行坐标和列坐标的数位之和大于 thresh…...
【Qt基础篇】信号和槽
文章目录 一些常见的bug:字符集不对产生的错误VS平台中文乱码 QT的优点关于.pro文件QtCreator快捷键最简单的qt程序按钮的创建对象模型**Qt窗口坐标**体系信号和槽机制connect函数系统自带的信号和槽案例:实现点击按钮-关闭窗口的案例 自定义信号和槽案例…...
.netCore用DispatchProxy实现动态代理
在 .NET Core 中,你可以使用 DispatchProxy 类来实现动态代理。DispatchProxy 允许你在运行时创建一个代理对象,该代理对象可以拦截对其所代理的对象的方法调用,并在方法调用前后执行自定义的逻辑。这在 AOP(面向切面编程…...
好奇喵 | Tor浏览器——访问.onion网址,揭开Dark Web的神秘面纱
前言 在之前的博客中: 1.Surface Web —> Deep Web —> Dark Web,我们解释了表层网络、深层网络等的相关概念; 2.Tor浏览器——层层剥开洋葱,我们阐述了Tor的历史和基本工作原理; 3.Tor浏览器…...
Maven 中引用其他项目jar包出现BOOT-INF问题
问题 在B项目中引入A项目的类,但是发现怎么也引入不进来 A项目打包之后,想在B项目中引用jar 在B项目中发现类文件无法引用 参考网上进行清缓存等一系列操作都没有解决。 最后发现引用的jar包中包含BOOT-INF, 然后去A项目中查找ÿ…...
这家头部智能家居品牌是如何让全渠道电商闭环运营落地?
在电商渠道愈发多元的当下,让很多企业陷入 “数据多却用不好” 的困境。这不是个别现象,而是绝大多数全渠道电商企业正在经历的“成长烦恼”。今天,我们用一个真实案例,带您看看如何用一套系统,彻底告别这些噩梦。这家…...
在Taotoken模型广场中根据任务与预算选择合适的模型
🚀 告别海外账号与网络限制!稳定直连全球优质大模型,限时半价接入中。 👉 点击领取海量免费额度 在Taotoken模型广场中根据任务与预算选择合适的模型 当开发者需要将大模型能力集成到自己的应用或工作流中时,面对市场…...
收藏!小白程序员必备:2026年AI大模型就业新机遇与学习路线指南
根据世界经济论坛报告,到2030年科技、数据、AI等领域将创造1.7亿工作机会,同时淘汰9200万个岗位。AI市场规模预计到2034年达36804.7亿美元,年复合增长率19.20%。中国AI人才需求将远超供应。文章介绍了AI运营/AIGC内容创作者、算法工程师、大模…...
软件需求捕获:从Therac-25悲剧到安全关键系统开发的脊柱工程
1. 项目概述:从Therac-25悲剧到现代软件安全基石上世纪90年代中期,一系列由Therac-25放射治疗机引发的致命事故,最终催生了一场由华盛顿大学Nancy Leveson教授主导的正式调查。这场调查的结论,远不止于揪出一款医疗设备的软件缺陷…...
AI信息摘要工具:从数据采集到智能推送的完整实践指南
1. 项目概述:一个AI驱动的每日信息摘要工具最近在GitHub上看到一个挺有意思的项目,叫“ai-daily-digest”。光看名字,你大概能猜到它的核心功能:利用人工智能技术,自动为你生成每日的信息摘要。作为一个经常被信息洪流…...
基于LLM的多智能体协作框架:从原理到实践构建自主开发团队
1. 项目概述与核心价值最近在开源社区里,一个名为zxkane/autonomous-dev-team的项目引起了我的注意。乍一看这个标题,你可能会联想到科幻电影里的全自动机器人编程,或者是一些过于理想化的“AI接管开发”的噱头。但在我花时间深入研究和实践之…...
Guitar Pro 8.1.5作为吉他爱好者的练琴神器,其跨平台支持与强大功能值得重点关注。本评测聚焦其核心优势与操作要点,为吉他学习者与原创音乐人提供高效解决方案。跨系统兼容性Guit
Guitar Pro 8.1.5作为吉他爱好者的练琴神器,其跨平台支持与强大功能值得重点关注。本评测聚焦其核心优势与操作要点,为吉他学习者与原创音乐人提供高效解决方案。跨系统兼容性 Guitar Pro 8.1.5同时支持macOS与Windows系统,mac用户无需转战Wi…...
TEKLauncher终极指南:如何打造ARK生存进化的专业级游戏启动器
TEKLauncher终极指南:如何打造ARK生存进化的专业级游戏启动器 【免费下载链接】TEKLauncher Launcher for ARK: Survival Evolved 项目地址: https://gitcode.com/gh_mirrors/te/TEKLauncher ARK生存进化玩家必看!TEKLauncher作为一款专为ARK: Su…...
Cache映射策略全解析:从全相联到组相连,如何平衡灵活性与效率?
1. 为什么需要Cache映射策略? 想象一下你正在图书馆找一本书。如果每次都要从最外层的书架开始一本本翻找,效率肯定低得令人发指。这时候我们会给书籍分类编号——这就是Cache映射策略的日常类比。 在计算机体系结构中,CPU的运行速度远远快于…...
基于SEID模型与ode45数值解的艾滋病传播动力学建模与区域防控策略评估
1. 当数学模型遇上艾滋病防控 我第一次接触传染病建模是在研究生时期,当时导师扔给我一叠艾滋病流行病学数据,说:"试试用微分方程描述这个传播过程"。那会儿对着密密麻麻的病例报告,我完全没想到数学公式真能模拟现实中…...
