【id:21】【1分】E. DS单链表--类实现

news2024/11/26 16:34:23

题目描述

用C++语言和类实现单链表,含头结点

属性包括:data数据域、next指针域

操作包括:插入、删除、查找

注意:单链表不是数组,所以位置从1开始对应首结点,头结点不放数据

类定义参考

输入

n

第1行先输入n表示有n个数据,接着输入n个数据
第2行输入要插入的位置和新数据
第3行输入要插入的位置和新数据
第4行输入要删除的位置
第5行输入要删除的位置
第6行输入要查找的位置
第7行输入要查找的位置

输出

n

数据之间用空格隔开,

第1行输出创建后的单链表的数据

每成功执行一次操作(插入或删除),输出执行后的单链表数据

每成功执行一次查找,输出查找到的数据

如果执行操作失败(包括插入、删除、查找等失败),输出字符串error,不必输出单链表

样例查看模式 

正常显示查看格式

输入样例1 <-复制

6 11 22 33 44 55 66
3 777
1 888
1
11
0
5

输出样例1

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);
    int LL_get(int i);
    int LL_insert(int i, int item);
    int LL_del(int 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;
}
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;
}
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);
    s = new ListNode();
    s->data = item;
    s->next = p->next;
    p->next = 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);
    s = p->next;
    p->next = s->next;
    delete s;
    len--;
    return ok;
}

int main()
{
    int n, i, m;
    int j;
    LinkList list;
    cin >> n;
    for (i = 1; i <= n; i++)
    {
        cin >> m;
        list.LL_insert(i, m);
    }
    list.LL_display();
    for (j = 0; j < 2; j++)
    {
        cin >> i >> m;
        if (list.LL_insert(i, m) != -1)
            list.LL_display();
        else cout << "error" << endl;
    }
    for (j = 0; j < 2; j++)
    {
        cin >> i;
        if (list.LL_del(i) != -1)
            list.LL_display();
        else cout << "error" << endl;
    }
    for (j = 0; j < 2; j++)
    {
        cin >> i;
        if (list.LL_get(i) != -1)
            cout << list.LL_get(i);
        else cout << "error" << endl;
    }
    return 0;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/662610.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

GRE over IPsec VPN配置

GRE over IPsec VPN配置 【实验目的】 理解GRE Tunnel的概念。理解GRE over IPsec VPN的概念。掌握GRE Tunnel的配置。掌握GRE over IPsec VPN的配置。验证配置。 【实验拓扑】 实验拓扑如下图所示。 实验拓扑 设备参数表如下表所示。 设备参数表 设备 接口 IP地址 子网…

Ziya:一个自回归、双语、开源和多功能的大语言模型

什么是Ziya&#xff1f; Ziya是一个基于LLaMa的130亿参数的中英双语预训练语言模型&#xff0c;它由IDEA研究院认知计算与自然语言研究中心&#xff08;CCNL&#xff09;推出&#xff0c;是开源通用大模型系列的一员。Ziya具备翻译&#xff0c;编程&#xff0c;文本分类&#…

JS中遍历对象的方法讲解

文章目录 for...in循环当使用for...in循环遍历对象时&#xff0c;需要注意以下几点&#xff1a; Object.keys()方法结合forEach()循环Object.entries()结合forEach()循环Object.getOwnPropertyNames()方法结合forEach()循环 在JavaScript中&#xff0c;有几种常用的方法可以用来…

runjs在vue2项目中的使用

安装run.js插件 安装chalk const { run } require(runjs) const chalk require(chalk) const config require(../vue.config.js) const rawArgv process.argv.slice(2) const args rawArgv.join( )if (process.env.npm_config_preview || rawArgv.includes(--preview)) …

【科普】Windows10如何关闭搜索功能中的广告? Windows10如何关闭自动更新?

目录 一、Windows10如何关闭搜索功能中的广告&#xff1f;1.1 问题描述1.2 关闭步骤1.2.1 关闭显示搜索1.2.2 修改注册表 二、Windows10如何关闭自动更新&#xff1f;2.1 问题描述2.2 关闭步骤 一、Windows10如何关闭搜索功能中的广告&#xff1f; 1.1 问题描述 windows10的搜…

云安全技术(五)之评估云服务供商

评估云服务提供商 Evaluate Cloud Service Providers 1.1 根据标准认证 Verification against criteria ISO/EC 27001和27001:2013NIST SP 800-53支付卡行业数据安全标准(PCI DSS)SOC 1、SOC 2和SOC 3通用准则(Common Criteria)FIPS 140-2 1.2 系统/子系统产品认证 System/su…

pytest - 使用pytest过程中的5大超级技巧(实例详解篇)

从简单的断言和测试用例组织到更先进的参数化和夹具管理&#xff0c;pytest提供了强大的功能和灵活性。让我们一起探索这些技巧&#xff0c;使你的测试变得更加高效精准&#xff01; 无需担心阅读时间过长&#xff0c;本文已经为您准备了详尽的解析和实际示例。立即开始&#…

基于MATLAB的前景检测器实现道路车辆实时检测跟踪(完整代码分享)

交通问题越来越开始影响着人们的生产和生活,由于汽车拥有量的急剧增加,城市交通问题日益严重,因此交通问题开始成为人们关心的社会热点。在我国,近年来,交通事故频繁发生,有效的交通监测和管理已迫在眉睫。 完整代码: clc; clear; close all; warning off; addpath(gen…

redis源码之:字典dict

先来看看dict的大致结构&#xff1a; debug所用demo如下&#xff1a; void testDict(); int main(int argc, char **argv) {testDict(); } void testDict(){dict *dict0 dictCreate(&hashDictType, NULL);//注意key要用sds,如果是普通字符串&#xff0c;长度会判为0&…

这年头不会还有人纯文字聊天吧 ?教你用Python一键获取斗图表情包

前言 嗨喽&#xff0c;大家好呀~这里是爱看美女的茜茜呐 很多兄弟在聊天上没有下太多的功夫&#xff0c;导致自己聊天的时候很容易尬住&#xff0c; 然后就不知道聊啥了&#xff0c;这时候合适表情包分分钟就能救场&#xff0c; 但是一看自己收藏的表情包&#xff0c;好家伙…

【MySQL】一文带你彻底了解事务机制

文章目录 何谓事务&#xff1f;事务的特性&#xff1a;ACID事务的操作隔离性引发的并发问题不可重复读和幻读有什么区别 事务的隔离级别MySQL 的隔离级别是基于锁实现的吗&#xff1f;默认隔离级别解决幻读的方法总结 我们设想一个场景&#xff0c;这个场景中我们需要插入多条相…

网络安全学术顶会——CCS '22 议题清单、摘要与总结(下)

注意&#xff1a;本文由GPT4与Claude联合生成。 161、Secure Auctions in the Presence of Rational Adversaries 密封竞标拍卖用于在一组感兴趣的参与者之间分配资源。传统上&#xff0c;拍卖需要一个受信任的拍卖师在场&#xff0c;竞标者向其提供他们的私人出价。然而&#…

Flask简单入门

Flask 是一个使用 Python 编写的轻量级 Web 应用框架。它使用 Werkzeug 作为底层 WSGI 实现&#xff0c;而 Jinja2 则是其默认模板引擎。Flask 的设计简单易用&#xff0c;灵活性高&#xff0c;可以快速构建出完整功能的 Web 应用。 本文将从 Flask 的基础知识介绍、开发环境…

基于SSD算法的电动车头盔检测【附代码】

本项目是基于SSD算法实现的电动车头盔检测。完整的项目是基于SSD的改进-->知识蒸馏-->自蒸馏-->剪枝-->trt推理。本想用来发论文的&#xff0c;但可能没那时间和精力了&#xff0c;这里仅选择项目中的一部分内容进行开源。 目录 开源说明 项目功能说明 项目代码…

尚硅谷微信小程序开发 仿网易云音乐App 小程序 后端接口服务器搭建

小程序学习 尚硅谷微信小程序开发 项目网易云小程序学习地址&#xff1a; 01-尚硅谷-小程序-课程介绍_哔哩哔哩_bilibili 视频相关的教程文档与笔记分享 链接&#xff1a;https://pan.baidu.com/s/1aq7ks8B3fJ1Wahge17YYUw?pwd7oqm 提取码&#xff1a;7oqm 配套服务器 老师…

还敢说你会接口测试吗?全覆盖接口测试扫描总结(详细)

目录&#xff1a;导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结&#xff08;尾部小惊喜&#xff09; 前言 接口的本质及其工…

搭建SpringBoot项目 详细教程

一、搭建SpringBoot项目 这个项目&#xff0c;可以作为种子项目&#xff0c;我打算把它放置Gitee上。包含大部分web开发的相关功能&#xff0c;后期所有的Spring Boot项目都可以用这个项目&#xff0c;简单修改一下配置&#xff0c;就可以快速开发了。 选择Spring initializr…

C51/C52--led流水灯、静态数码管

目录 一、led流水灯&#xff08;flowing water lamp&#xff09; 二、静态数码管 一、led流水灯&#xff08;flowing water lamp&#xff09; 我们在点亮一个led灯的基础上&#xff0c;对8个led灯按照某种特定的点亮规律进行操作&#xff0c;从而形成像水按顺序流动的效果。 …

缓存在高并发场景下的常见问题

缓存一致性问题 当数据时效性要求很高时&#xff0c;需要保证缓存中的数据与数据库中的保持一致&#xff0c;而且需要保证缓存节点和副本中的数据也保持一致&#xff0c;不能出现差异现象。这就比较依赖缓存的过期和更新策略。一般会在数据发生更改的时&#xff0c;主动更新缓…

JMeter性能测试---完整入门到白了少年头

目录 一、性能测试 二、负载/压力/可靠性 三、JMeter工具 四、负载脚本 五、Jmeter参数化 六、远程操作运行脚本 一、性能测试 测试目的&#xff1a; 1.客户有明确要求&#xff0c;如&#xff1a;系统要求同时满足5000个用户登录&#xff0c;平均每个用户登录时间不能超…