java链表问题,求解答

定义一个链表对象,存储字符串,把链表中的元素倒序写入另一个链表中,找出两个链表中的相同元素(元素的位置和内容都相同)
一点头绪都没有,是用冒泡排序或者循环吗

不需要排序啊,创建链表A后,遍历链表A,采用头插法,链表A中的数据写入链表B,然后从头遍历A和B,内容相等的就输出。

img

代码如下:
ListNode.java

public class ListNode {
    public String data;
    ListNode next;
}


Test.java:


import java.util.Scanner;

public class Test {
    public static void main(String[] args){
        
        Scanner sc = new Scanner(System.in);
        int nlen = 0; //记录链表长度
        System.out.print("请输入链表元素个数:");
        nlen = sc.nextInt();
        //
        
        //创建链表
        ListNode list1 = new ListNode(); //链表1
        list1.next = null;
        ListNode list2 = new ListNode(); //链表2
        list2.next = null;
        
        ListNode t1 = list1;
        //创建链表1
        for(int i=0;i<nlen;i++){
            ListNode p = new ListNode();
            p.data = sc.next(); //读取字符串
            p.next = null;
            t1.next = p;
            t1 = p;
        }
        
        System.out.println("链表1:");
        t1 = list1.next;
        while(t1 != null){
            System.out.print(t1.data + " ");
            t1 = t1.next;
        }
        System.out.println();
        
        //将链表1的元素插入链表2
        t1 = list1.next;
        while(t1 != null){
            ListNode ts = new ListNode();
            ts.data = t1.data;
            ts.next = list2.next;
            list2.next = ts;
            t1 = t1.next;
        }
        
        System.out.println("链表2:");
        ListNode t2 = list2.next;
        while(t2 != null){
            System.out.print(t2.data+" ");
            t2=t2.next;
        }
        System.out.println();
        System.out.println("链表1和链表2相同元素:");
        //遍历1和2,找出相同元素
        t1 = list1.next;
        t2 = list2.next;
        while(t1!= null && t2 != null){
            if(t1.data.equals(t2.data))
                System.out.println(t1.data);
            
            //
            t1 = t1.next;
            t2 = t2.next;
        }
        
        
    }
}

遍历链表,判断是否相等

例如链表1:1 2 4 3 5 3 4 6 7
那么链表2:7 6 4 3 5 3 4 2 1
很明显可以看出,第2 3 4 5 6是位置和内容都相同的
两个链表一起遍历看同位置元素是否相等几可以了

直接遍历A,判断第一个是否与最后一个元素相等 ,第二个与倒数第二个

 LinkedList<String> A = new LinkedList<>();
        int left = 0,right = A.size()-1;
        while (left <= right){
            if(A.get(left).equals(A.get(right))){
                // 相等
            }
        }

链表倒个序,取对应位置上的做比较就可以了

您好,我是有问必答小助手,您的问题已经有小伙伴帮您解答,感谢您对有问必答的支持与关注!
PS:问答VIP年卡 【限时加赠:IT技术图书免费领】,了解详情>>> https://vip.csdn.net/askvip?utm_source=1146287632