2024C#面试真题:单向链表的查询、插入

一、题目

面试题:C#编程实现以下要求(不允许用封装方法,需要自己构建):

1. 依照数据,实现Student类

2. 实现单向链表类

类方法:

1) Student Get(int id); 根据学号查询,参数为int regID, 返回为Student对象

2) Student Locate(int pos); 根据链表位置查询,参数为int pos, 返回为Student对象

3) bool Insert(Student stu); 以学号为key升序插入链表,参数为Student对象,返回值为true/false

3.读取数据文件,格式化为Student对象,并添加到List里

4.根据学号,查询该学生信息

5.根据位置,查询该学生信息

数据文件内容(姓名,学号,成绩):

郑英,20216793,94

尹超,20196587,79

吴霞,20228110,92

贺勇,20206374,73

作答时长要求1h以内

二、参考答案(AI作答)

以下作答内容为AI作答,仅供参考,若对答案有异议,恳请评论区指出谢谢!

①学生实体类:

public class Student
{
    public string Name { get; set; }
    public int ID { get; set; }
    public int Score { get; set; }

    public Student(string name, int id, int score)
    {
        Name = name;
        ID = id;
        Score = score;
    }
}

②单向链表类:

public class LinkedList
{
    private class Node
    {
        public Student Data { get; set; }
        public Node Next { get; set; }

        public Node(Student student)
        {
            Data = student;
            Next = null;
        }
    }

    private Node head;

    public LinkedList()
    {
        head = null;
    }

    public Student Get(int id)
    {
        Node current = head;
        while (current != null)
        {
            if (current.Data.ID == id)
                return current.Data;
            current = current.Next;
        }
        return null; // if not found
    }

    public Student Locate(int pos)
    {
        Node current = head;
        int index = 0;
        while (current != null && index < pos)
        {
            current = current.Next;
            index++;
        }
        if (current != null)
            return current.Data;
        else
            return null; // if position is out of bounds
    }

    public bool Insert(Student stu)
    {
        Node newNode = new Node(stu);

        if (head == null || head.Data.ID > stu.ID)
        {
            newNode.Next = head;
            head = newNode;
            return true;
        }

        Node current = head;
        while (current.Next != null && current.Next.Data.ID < stu.ID)
        {
            current = current.Next;
        }

        newNode.Next = current.Next;
        current.Next = newNode;
        return true;
    }
}

③读取数据文件并格式化为 Student 对象

using System;
using System.Collections.Generic;
using System.IO;

class Program
{
    static void Main()
    {
        LinkedList studentList = new LinkedList();

        // 读取数据文件
        string[] lines = File.ReadAllLines("data.txt");

        foreach (string line in lines)
        {
            string[] parts = line.Split(',');
            if (parts.Length == 3)
            {
                string name = parts[0];
                int id = int.Parse(parts[1]);
                int score = int.Parse(parts[2]);
                Student student = new Student(name, id, score);
                studentList.Insert(student);
            }
        }

        // 示例:根据学号查询学生信息
        int searchID = 20216793;
        Student foundStudent = studentList.Get(searchID);
        if (foundStudent != null)
        {
            Console.WriteLine($"Student found: {foundStudent.Name}, ID: {foundStudent.ID}, Score: {foundStudent.Score}");
        }
        else
        {
            Console.WriteLine($"Student with ID {searchID} not found.");
        }

        // 示例:根据位置查询学生信息
        int position = 2;
        Student studentAtPosition = studentList.Locate(position);
        if (studentAtPosition != null)
        {
            Console.WriteLine($"Student at position {position}: {studentAtPosition.Name}, ID: {studentAtPosition.ID}, Score: {studentAtPosition.Score}");
        }
        else
        {
            Console.WriteLine($"No student found at position {position}.");
        }
    }
}

(工资参考:5K-10K)

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

vue3.0(十五)状态管理vuex和pinia

文章目录 状态管理vuex1. 什么情况下应该使用 Vuex2. vuex的安装3. vuex的五大属性4. vuex的五大属性在组件中的应用5. 数据持久化 pinia1.Pinia 对比 Vuex2.安装及引入3.三大属性4.三大属性在组件中的运用总结 状态管理 状态管理是指对Vue.js应用中的数据进行统一管理的一种机…

【.Net】Web项目部署腾讯云

文章目录 总述前置准备docker-compose部署普通部署 参考 总述 前置准备 云服务添加端口 另有linux本身防火墙请参考&#xff1a; 【Linux】防火墙命令 需安装.Net SDK和Asp .Net Runtime 注意&#xff1a; 1、sdk也要不只是runtime 2、是Asp .Net Runtime不是.Net Runtime …

擎耀解码汽车大灯照明系统电动调节步进电机位置反馈的解决方案

在现代汽车设计中&#xff0c;智能照明系统扮演着至关重要的角色。其中&#xff0c;汽车大灯的电动调节功能不仅提高了夜间行车的安全性&#xff0c;还增强了车辆的科技感和便利性。然而&#xff0c;要实现精准的大灯角度调节&#xff0c;步进电机的位置反馈机制尤为关键。擎耀…

SpringBoot脚手架MySpringBootAPI(PgSQL+Druid+MyBatisPlus+Lombok)

MySpringBootAPI SpringBoot脚手架&#xff0c;基于SpringBootDruidPgSQLMyBatisPlusFastJSONLombok&#xff0c;其他的请自行添加和配置。 Author powered by Moshow郑锴(大狼狗) , https://zhengkai.blog.csdn.net 如何运行 1.首先确保你是JDK17&#xff0c;推荐微软的MSJDK…

《Windows API每日一练》6.4 程序测试

前面我们讨论了鼠标的一些基础知识&#xff0c;本节我们将通过一些实例来讲解鼠标消息的不同处理方式。 本节必须掌握的知识点&#xff1a; 第36练&#xff1a;鼠标击中测试1 第37练&#xff1a;鼠标击中测试2—增加键盘接口 第38练&#xff1a;鼠标击中测试3—子窗口 第39练&…

ECharts 源码代码规范

代码规范 - Apache EChartsApache ECharts&#xff0c;一款基于JavaScript的数据可视化图表库&#xff0c;提供直观&#xff0c;生动&#xff0c;可交互&#xff0c;可个性化定制的数据可视化图表。https://echarts.apache.org/zh/coding-standard.html 源文件 [强制] JavaScr…

基于ARM的通用的Qt移植思路

文章目录 实验环境介绍一、确认Qt版本二、确认交叉编译工具链三、配置Qt3.1、修改qmake.conf3.2、创建autoConfig.sh配置文件 四、编译安装Qt五、移植Qt安装目录六、配置Qt creator6.1、配置qmake6.2、配置GCC编译器6.3、配置G编译器6.4、配置编译器套件6.5、创建应用 七、总结…

论文速览 | IEEE Signal Processing Letters, 2024 | 基于时空上下文学习的事件相机立体深度估计

论文速览 | IEEE Signal Processing Letters, 2024 | 基于时空上下文学习的事件相机立体深度估计 1 引言 在计算机视觉领域,立体深度估计一直是一个备受关注的研究热点。传统的基于帧的方法虽然取得了长足的进步,但在处理运动模糊、低照度和平坦区域等挑战性场景时仍面临诸多…

二进制方式部署k8s集群

前置知识点 1、生产环境部署K8s集群的两种方式 • kubeadm Kubeadm是一个K8s部署工具&#xff0c;提供kubeadm init和kubeadm join&#xff0c;用于快速部署Kubernetes集群。 • 二进制包 从github下载发行版的二进制包&#xff0c;手动部署每个组件&#xff0c;组成Kub…

Linux的fread函数

fread函数 从文件中读入数据到指定的地址中 函数原型 : size_t fread(void*buff , size_t size, size_t count , FILE* stream) /* * description : 对已打开的流进行数据读取 * param ‐ ptr &#xff1a;指向 数据块的指针 * param ‐ size &#xff1a;指定读取的每…

LabVIEW编程控制ABB机械臂

使用LabVIEW编程控制ABB机械臂是一项复杂但十分有价值的任务。通过LabVIEW&#xff0c;可以实现对机械臂的精确控制和监控&#xff0c;提升自动化水平和操作效率。 1. 项目规划和硬件选型 1.1 确定系统需求 运动控制&#xff1a;确定机械臂需要执行的任务&#xff0c;如抓取、…

【总线】AXI4第四课时:握手机制详解

大家好,欢迎来到今天的总线学习时间!如果你对电子设计、特别是FPGA和SoC设计感兴趣&#xff0c;那你绝对不能错过我们今天的主角——AXI4总线。作为ARM公司AMBA总线家族中的佼佼者&#xff0c;AXI4以其高性能和高度可扩展性&#xff0c;成为了现代电子系统中不可或缺的通信桥梁…

乐观锁和悲观锁(MySQL和Java)

乐观锁和悲观锁(MySQL和Java) 在并发编程中&#xff0c;为了确保数据的一致性和完整性&#xff0c;我们通常需要使用锁机制来控制对共享资源的访问。锁主要分为两种&#xff1a;乐观锁和悲观锁。本文将详细介绍这两种锁的概念、工作原理以及它们的优缺点。 悲观锁 悲观锁(Pe…

LabVIEW电涡流检测系统

开发了一种基于LabVIEW的软件与硬件结合的电涡流检测系统&#xff0c;通过同步采样技术和编码器的协同工作&#xff0c;显著提高了大型结构物的损伤检测精度和效率&#xff0c;具有良好的应用前景和实用价值。 项目背景 传统的手持式电涡流检测方法因其速度慢、灵敏度低、准确…

根文件系统

根文件系统 1 介绍1.1 根文件系统介绍1.2 根文件系统目录1.3 常见的根文件系统 2 Buildroot 根文件系统的构建2.1 介绍2.2 依赖文件2.3 交叉编译工具2.4 构建2.4.1 配置 Target options2.4.2 配置 Toolchain2.4.3 配置 System configuration2.4.4 配置 Filesystem images2.4.5 …

微服务知识

传统架构 传统架构会出现的问题 配置烦琐&#xff0c;上线容易出错 加机器要重启 负载均衡单点 管理困难 CAP原则。 CAP原则是指在一个分布式系统中&#xff0c;Consistency&#xff08;一致性&#xff09;、Availability&#xff08;可用性&#xff09;、Partition Toleranc…

产品中心|高效能双处理器Xilinx FPGA 4通道射频收发板卡

1、产品概述 基于Xilinx XC7K325T芯片的4通道射频收发板卡&#xff0c;搭载高能效Cortex-A8内核处理器、1组16bit/2GB DDR3及1组4GB DDR3、 1组2GB Nand Flash、1路USB接口、4路高速ADC、4路高速DAC&#xff0c;支持外触发&#xff0c;外时钟。用于FPGA程序加载板卡工作温度范…

Zynq7000系列FPGA中的DMA控制器简介(一)

DMA控制器&#xff08;DMAC&#xff09;使用64位AXI主接口来执行与系统存储器和PL外围设备之间的DMA数据传输&#xff0c;操作频率同CPU_2x的时钟速率。传输由DMA指令执行引擎控制。DMA引擎运行在一个小指令集上&#xff0c;该指令集提供了一种灵活的指定DMA传输的方法。这种方…

激光雷达数据处理

激光雷达技术以其高精度、高效率的特点&#xff0c;已经成为地表特征获取、地形建模、环境监测等领域的重要工具。掌握激光雷达数据处理技能&#xff0c;不仅可以提升工作效率&#xff0c;还能够有效提高数据的质量和准确性&#xff0c;为决策提供可靠的数据支持。 第一章、激…

STM32_hal库学习(3)-OLED显示

硬件&#xff1a;stm32f103c8t6&#xff0c;四脚oled 四脚OLED用的是iic通讯协议&#xff0c;什么是IIC通讯协议&#xff1f;具体可看这篇文章。 stm32中IIC通讯协议-CSDN博客 既然了解了iic协议&#xff0c;接下来我们就利用stm32cubemx来配置oled。 1.新建一个工程 2.然…