java链表listnode是线程安全的吗_两个升序链表合并为一个升序链表

java链表listnode是线程安全的吗_两个升序链表合并为一个升序链表/***描述:删除链表中等于给定值val的所有节点。样例:给出链表1->2->3->3->4->5->3,和val=3,你需要返回删除3之后的链表:1->2->4->5。分析:1.首先判断head是不是空,为空就直接返回null2.然后从head.next开始循环遍历,删除相等于val的元素3.最后判断head是否和val相等,若相等,head=head.next

大家好,又见面了,我是你们的朋友全栈君。

/**

  • 描述:

删除链表中等于给定值val的所有节点。
不使用java api LinkedList、ArrayList实现

样例:

给出链表 1->2->3->3->4->5->3, 和 val = 3, 你需要返回删除3之后的链表:1->2->4->5。

分析:

1.首先判断head是不是空,为空就直接返回null
2.然后从head.next开始循环遍历,删除相等于val的元素
3.最后判断head是否和val相等,若相等,head = head.next
(这里最后判断head是有原因的,因为head只是一个节点,只要判断一次,如果最先判断head就比较麻烦,因为如果等于val,head就要发生变化)
这里也体现出为什么设计链表的时候要空出一个头结点

*/

package leetcode;

class ListNode{
	int val;
	ListNode nextNode;
	ListNode(int val){
		this.val=val;
		this.nextNode=null;
	}
}
public class n2deletelistnode {

	static ListNode  head=null;
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		int[] input=new int[]{1,2,3,3,4,4,5};
		ListNode listNode=buildListNode(input);
		head=listNode;
		while(listNode!=null){
			System.out.println("val"+listNode.val+"/listNode"+listNode.nextNode);
			listNode=listNode.nextNode;
		}
		head=removeElements(head,3);
		listNode=head;
		while(listNode!=null){
			System.out.println("val"+listNode.val+"/listNode"+listNode.nextNode);
			listNode=listNode.nextNode;
		}

	}
	private static ListNode buildListNode(int[] input){
		ListNode first = null,last = null,newNode;
		int num;
		if(input.length>0){
			for(int i=0;i<input.length;i++){
				newNode=new ListNode(input[i]);
				newNode.nextNode=null;
				if(first==null){
					first=newNode;
					last=newNode;
				}
				else{
					last.nextNode=newNode;
					last=newNode;
				}
				
			}
		}
		return first;
	}
	private static ListNode removeElements(ListNode head,int val){
		if(head==null){
			return null;
		}
		ListNode p=head,q=head.nextNode;
		while(q!=null){
			if(q.val==val){
				p.nextNode=q.nextNode;
				q=q.nextNode;
			}else{
				p=p.nextNode;
				q=q.nextNode;
			}
		}
		if(head.val==val){
			return head.nextNode;
		}
		return head;
		
	}

}
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/125313.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 空间回归与地理加权_地理加权回归处理点数据

    空间回归与地理加权_地理加权回归处理点数据本章有数学公式……对数学过敏者慎入……前文再续,书接上一回……上一次说到,在改进全局回归的基础上,GWR终于横空出世了,从此空间分析领域终于有了自己专用的回归算法。如果说,空间统计有别于经典统计学的两大特征:空间相关性和空间异质性,莫兰指数等可以用来量化空间相关性,那么地理加权回归,就可以用来量化空间异质性。在对全局回归问题的改进中,局部回归可以说是最简单的方法,GWR继续应用了局

    2022年10月7日
    4
  • intercept用法_俄大使称加拿大新制裁仅具象征性

    intercept用法_俄大使称加拿大新制裁仅具象征性“斜率”参数(w,也叫作权重或系数)被保存在coef_属性中,而偏移或截距(b)被保存在intercept_属性中L1正则化时,可以通过coef_中不等于0的个数来确定使用了几个特征np.sum(lasso.coef_!=0)…

    2025年5月31日
    2
  • app数据库表的设计_订单数据库设计

    app数据库表的设计_订单数据库设计近期公司要着手一个商城的项目,后台那边暂时有项目。让我设计一下数据库。这是我总结设计的,记录下日后完善。

    2025年11月4日
    3
  • 快速排序中的分割算法的解析与应用

    快速排序中的分割算法的解析与应用

    2021年9月15日
    42
  • 分布式系统中CAP原理[通俗易懂]

    分布式系统中CAP原理[通俗易懂]分布式系统CAP原理分布式系统发开虽然有点很多但是并不是完美的,CAP原理就是其中的体现之一。CAP原理:指的是在一个分布式系统中,Consistency(一致性)、Availability(可用性)、Partitontolerance(分区容忍性),三者不可得兼。一致性(C):在分布式系统中的所有数据备份,在同一时刻是否同样的值。简单说就是所有节点在同一时刻的数据完全一致,这就意味着节点越…

    2022年5月19日
    38
  • 指针

    指针

    2022年1月12日
    50

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号