链表的面试题

1、求链表中有效节点个数

(不算头结点)

//方法:获取单链表节点的有效个数
		/**
		 * 
		 * @param Head 链表头节点
		 * @return 返回有效个数
		 */
		public static int getLength(ExerciseNode Head) {
			if(Head.next==null) {
				return 0;
			}
			int length = 0;
			ExerciseNode newNode = Head.next;
			while (newNode != null) {
				length++;
				newNode = newNode.next;
			}
			return length;
		}

2、新浪面试题

查找单链表倒数第K个节点

  1. 编写一个方法,接收head节点,同时接收一个index
  2. index 表示倒数第index个节点
  3. 先把链表从头到尾遍历,得到总长度 get length
  4. 得到size后 从链表第一个开始遍历(size -index)个可以得到
//寻找倒数第K个节点
	public static HeroNode findLastIndexNode(HeroNode head,int index) {
		//判断链表是否为空
		if(head.next == null) {
			return null;//没有找到
		}
		//第一次遍历链表长度
		int size = getLength(head);
		//第二次遍历 size - index位置,
		//先做一个index校验
		if(index <0 || index>size) {
			return null;//没有找到
		}
		//定义一个辅助变量
		HeroNode curr = head.next;
		for(int i=0;i<size-index;i++) {
			curr = curr.next ;
		}
		return curr;
	}
3、腾讯面试题

实现链表反转

  1. 先定义一个节点 reverseHead = new HeroNode();
  2. 从头到尾遍历原来的链表,每遍历一个节点,就将其取出,并放在新链表最前端
  3. 原来的链表的head.next =reverseHead.next
	//将单链表进行反转
	public static void reverseList(HeroNode head) {
	//当前链表为空或者只有一个节点
	if(head.next == null || head.next.next ==null ) {
		return ;
	}
	//定义一个辅助指针,帮助遍历原来的链表
	HeroNode cur = head.next;
	HeroNode next = null;//指向cur的下一个节点
	HeroNode reverseHead = new HeroNode(0,"","");
	//遍历原来的链表 每遍历一个节点,就将其取出,放在新链表reverseHead的最前端
	while(cur !=null) {
		next = cur.next;//先暂时保存当前节点(cur)的下一个节点,后面需要使用
		cur.next = reverseHead.next;//将cur的下一个节点指向新链表的最前端
        reverseHead.next = cur;//将cur连接到新的链表上!!!!!!!!!!
		cur = next;//让cur后移
	}
	//将head.next 指向reverseHead.next;
	head.next = reverseHead.next;
	      }
4、百度面试题

逆序打印单链表

  1. 方式一、现将单链表进行反转操作,然后遍历即可,但是会破坏原来单链表结构,不建议;

  2. 方式二、利用栈,将各个节点压入到栈中,利用栈的先进后出特点。

    //逆序打印链表
    	public static void reversePrint(HeroNode head) {
    		if(head.next == null) {
    			return;//空链表不能打印
    		}
    		//创建一个栈,将各个节点压入
    		Stack<HeroNode> stack = new Stack<HeroNode>();
    		HeroNode cur = head.next;
    		//将链表所有节点压入
    		while(cur !=null) {
    			stack.push(cur);
    			cur = cur.next;//cur后移,就可以压入下一个节点
    		}
    		//将栈中节点打印, pop 出栈
    		while (stack.size()>0 ) {
    			System.out.println(stack.pop());//stack 先进后出
    		}
    	}
    
内容概要:本文围绕SecureCRT自动化脚本开发在毕业设计中的应用,系统介绍了如何利用SecureCRT的脚本功能(支持Python、VBScript等)提升计算机、网络工程等相关专业毕业设计的效率与质量。文章从关键概念入手,阐明了SecureCRT脚本的核心对象(如crt、Screen、Session)及其在解决多设备调试、重复操作、跨场景验证等毕业设计常见痛点中的价值。通过三个典型应用场景——网络设备配置一致性验证、嵌入式系统稳定性测试、云平台CLI兼容性测试,展示了脚本的实际赋能效果,并以Python实现的交换机端口安全配置验证脚本为例,深入解析了会话管理、屏幕同步、输出解析、异常处理和结果导出等关键技术细节。最后展望了低代码化、AI辅助调试和云边协同等未来发展趋势。; 适合人群:计算机、网络工程、物联网、云计算等相关专业,具备一定编程基础(尤其是Python)的本科或研究生毕业生,以及需要进行设备自动化操作的科研人员; 使用场景及目标:①实现批量网络设备配置的自动验证与报告生成;②长时间自动化采集嵌入式系统串口数据;③批量执行云平台CLI命令并分析兼容性差异;目标是提升毕业设计的操作效率、增强实验可复现性与数据严谨性; 阅读建议:建议读者结合自身毕业设计课题,参考文中代码案例进行本地实践,重点关注异常处理机制与正则表达式的适配,并注意敏感信息(如密码)的加密管理,同时可探索将脚本与外部工具(如Excel、数据库)集成以增强结果分析能力。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值