首页 > 其他分享 >7-1单链表的基本操作

7-1单链表的基本操作

时间:2024-10-08 22:13:12浏览次数:7  
标签:单链 ListNode scanner temp int next 链表 基本操作

题目:
7-1 单链表基本操作
分数 20
作者 朱允刚
单位 吉林大学
请编写程序实现单链表插入、删除结点等基本算法。给定一个单链表和一系列插入、删除结点的操作序列,输出实施上述操作后的链表。单链表数据域值为整数。

输入格式:
输入第1行为1个正整数n,表示当前单链表长度;第2行为n个空格间隔的整数,为该链表n个元素的数据域值。第3行为1个正整数m,表示对该链表施加的操作数量;接下来m行,每行表示一个操作,为2个或3个整数,格式为0 k d或1 k。0 k d表示在链表第k个结点后插入一个数据域值为d的结点,若k=0则表示表头插入。1 k表示删除链表中第k个结点,此时k不能为0。注:操作序列中若含有不合法的操作(如在长度为5的链表中删除第8个结点、删除第0个结点等),则忽略该操作。n和m不超过100000。

输出格式:
输出为一行整数,表示实施上述m个操作后的链表,每个整数后一个空格。输入数据保证结果链表不空。

输入样例:
5
1 2 3 4 5
5
0 2 8
0 9 6
0 0 7
1 0
1 6

输出样例:
7 1 2 8 3 5

代码如下:
`import java.util.Scanner;

class ListNode {
int val;
ListNode next;

ListNode(int val) {
    this.val = val;
}

}

public class SingleLinkedListOperations {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int n = scanner.nextInt();
ListNode head = new ListNode(0);
ListNode current = head;
for (int i = 0; i < n; i++) {
current.next = new ListNode(scanner.nextInt());
current = current.next;
}

    int m = scanner.nextInt();
    for (int i = 0; i < m; i++) {
        int op = scanner.nextInt();
        int k = scanner.nextInt();
        if (op == 0) {
            int d = scanner.nextInt();
            ListNode newNode = new ListNode(d);
            if (k == 0) {
                newNode.next = head.next;
                head.next = newNode;
            } else {
                ListNode temp = head;
                while (k > 0 && temp.next!= null) {
                    temp = temp.next;
                    k--;
                }
                if (k == 0) {
                    newNode.next = temp.next;
                    temp.next = newNode;
                }
            }
        } else if (op == 1) {
            if (k > 0) {
                ListNode temp = head;
                while (k > 1 && temp.next!= null) {
                    temp = temp.next;
                    k--;
                }
                if (k == 1 && temp.next!= null) {
                    temp.next = temp.next.next;
                }
            }
        }
    }

    ListNode temp = head.next;
    while (temp!= null) {
        System.out.print(temp.val + " ");
        temp = temp.next;
    }
}

}`

标签:单链,ListNode,scanner,temp,int,next,链表,基本操作
From: https://www.cnblogs.com/zyh-828/p/18453159/2024-10-8

相关文章

  • winforms基本操作-将datagridview内容保存为excel文件
    这里记录一下将winforms展示的datagridview,导出或保存为excel文件。这里说一下环境、版本信息:win系统:win11框架:winforms依赖:Microsoft.Office.Interop.Excel.net:8.0.401.netframework:4.8DataGridView对象为dataGridView1,然后添加一个按钮,绑定事件btnConfirm即可。priva......
  • 数据库——DDL数据库和数据表的基本操作
    DDL一、数据库的基本操作1、创建(CREATE)--CREATEDATABASE/SCHEMA[IFNOTEXISTS]表名[指定数据库的字符集];--创建名为my的数据库CREATEDATABASEmy;CREATESCHEMAmy;--如果名为my的数据库不存在则创建,避免了当数据库存在而发生的错误CREATEDATABASEIFNOTEXIS......
  • apisix dashboard 基本操作
    apisixdashboard基本操作 安装1、下载rpm包wgethttps://github.com/apache/apisix-dashboard/releases/download/v3.0.1/apisix-dashboard-3.0.1-0.el7.x86_64.rpm2、安装apisix-dashboard-3.0.1-0.el7.x86_64.rpm3、启动systemctlstartapisix-das......
  • Git 基本操作
    目录一、基本概念1、工作区域2、文件状态二、基本使用1、设置用户标识2、初始化仓库3、提交文件到暂存区4、提交到本地库5、推送到远程仓库5.1错误说明6、克隆三、分支操作1、查看分支2、创建分支3、切换分支4、合并分支5、删除分支6、上传分支四、替换本地改动五、......
  • 00 文件基本操作 打开 操作 关闭
    ###4.1文件基本操作####1、打开-r,只能读。【**】-w,只能写,写之前清空。【**】-a,只能追加。【*】-r+-读:默认从0的光标开始读,也可以通过seek调整光标的为位置。-写:从光标所在的位置开始写,也可以通过seek调整光标的位置。-w+-读:默认光标永远在写入......
  • Git - 基本操作
    Git基本操作(本地库)很多小伙伴可能都听说过Git,那么Git到底是什么?为什么那么多人都在使用它?Git是一个开源的分布式版本控制系统,用于敏捷、高效地处理任何大中小项目,特别是对于团队协作开发起到了积极有效的推进作用。通俗地讲,Git就像我们玩RPG游戏时的存档系统,它可......
  • 只用单链表的方式判断一个链表是否为回文链表
    思路寻找链表的中点:使用快慢指针的方法,快指针每次移动两步,慢指针每次移动一步。当快指针到达链表末尾时,慢指针正好位于链表的中间。反转后半部分链表:从中点开始反转链表的后半部分。比较前半部分和反转后的后半部分:逐一比较两个部分的节点值,如果所有对应的节点值都相同,则......
  • 【自动驾驶】决策规划算法(一)决策规划仿真平台搭建 | Matlab + Prescan + Carsim 联合
    写在前面:......
  • JavaScript 对象的基本操作及相关知识点详解
    在JavaScript中,对象是一种基本的数据结构,以键值对形式保存数据且数据没有顺序,它可以包含多种数据类型的属性和方法。1.创建对象的方法字面量写法: let自定义对象名={}构造函数写法:let自定义对象名=newObject();//字面量写法letperson={};//构造函数......
  • 数据结构:单链表
    单链表单链表概念与结构节点链表的性质单链表的打印实现单链表创建新的节点在末尾插入数据在头部插入数据删除尾部数据删除第一个节点在链表中寻找目标数据在指定位置之前插入数据在指定位置之后插⼊数据删除pos结点删除pos之后的结点销毁链表单链表测试单链表概念与......