请求大佬支援!!!单链表合并错误

结果应该是[1]2]3]4]5]6]7]8]

合并后得到的结果却是[5][6][7][8]

我只是想把两个单链表单纯的连在一起

public class SingleList{

    private Node head;//头指针
    private Node rear;//尾指针
    private Node point;//临时指针
    private int length;//长度

    public SingleList() {//创建无数据的头结点
        head = new Node();
        rear = head;  //尾指针指向头指针
        length = 0;
    }

    public void rearadd(Object element) {//从尾部插入指针
        point = new Node(element);
        rear.next = point;
        rear = point;
        length++;
    }

    public boolean isEmpty() {
        int length = size();
        if(length==0) {
            return true;
        }
        return false;
    }

    public int size() {
        return length;
    }

    public Object get(int index) {
        Node temp = head;
        int i = 1;

        if(index == 0) {
            return head;
        }

        while(temp.next!=null) {
            if(index==i) {
                return temp;
            }
            temp = temp.next;
            i++;
        }

        return temp;
    }

    public Object get(Object element) {
        return null;
    }

    //更改指定位置的元素
    public void set(int index, Object element) {
        if (index >= 0 && index < length) {
            point = movePoint(index);
            point.next.data = element;
            point.data = null;
        } else {
            System.out.println("修改失败,没有指定位置元素");
        }
    }

    //连接两条链表
    public void connect(SingleList b) {
        this.rear.next = b.head.next;
        this.length += b.length;
    }

    public int add(Object element) {
        int i=0;

        //新建一个节点
        Node newnode = new Node(element);

        Node temp = head;    //一个移动的指针(把头结点看做一个指向结点的指针)
        while(temp.next != null){    //遍历单链表,直到遍历到最后一个则跳出循环。
            temp = temp.next;        //往后移一个结点,指向下一个结点。
            i++;
        }
        temp.next = newnode;    //temp为最后一个结点或者是头结点,将其next指向新结点

        //链表为空
        return i;
    }


    public void insert(int index, Node element) {
        //首先需要判断指定位置是否合法,
        if(index<1||index>size()){
            System.out.println("插入位置不合法。");
            return;
        }

        point = movePoint(index);
        Node temp = new Node(element);

        temp.next = point.next;
        point.next = temp;
        length++;

    }

    public Object remove(int index) {
        //判断index是否合理
        if(index<1 || index>size()){
            System.out.println("给定的位置不合理");
            return null;
        }

        point = movePoint(index);
        Node temp = point.next;

        point.next = temp.next;

        length--;

        return temp;
    }

    //移动指针到指定位置
    private Node movePoint(int position) {
        if(position<0) {
            return head;
        }
        if(position>length) {
            return rear;
        }
        if(position >= 0 && position <= length) {
            point = head;
            while(point!=null) {
                if(position==0) 
                    break;
                position--;
                point = point.next;
            }
        }
        return point;
    }

    //清除链表内容
    public void clear() {
        while(head.next!=null) {
            head.next = head.next.next;
        }
        rear =head;//回归初始状态
        point= null;
        length = 0;
        System.gc(); //请求系统清理垃圾
    }

    public void tostring() {
        point = head;
        while(point.next!=null) {
            System.out.print("["+point.next.data+"]");
            point = point.next;
        }
        System.out.println();
    }

    public static void main(String[] args) {
        SingleList a = new SingleList();
        SingleList b = new SingleList();
        a.add(1);
        a.add(2);
        a.add(3);
        a.add(4);
        b.add(5);
        b.add(6);
        b.add(7);
        b.add(8);
        a.connect(b);
        a.tostring();
    }
}

class Node{
    Node next = null;
    Object data;

    public Node() {
        this.data = null;
    }

    public Node(Object data) {
        this.data = data;
    }
}

1个回答

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问

相似问题

1
从键盘输入一组数据建立单链表,然后输出奇数位上的元素。
0
在单链表中统计某区域内的元素,将获得元素插入新单链表,并打印新链表元素在原链表中的序号
2
c++单链表创建新结点时不能输出值
0
带环链表能逆置吗?为什么?
0
跨考小白求助!!!请各位大佬指点
3
带头结点的循环/非循环单链表删除开始结点的时间复杂度
0
单链表实现的多项式加减法计算,输入的负号变成了正号,并且幂为负时显示错误,这个程序应该怎么改?
1
单链表查找运算报SIGSEGV错误
1
单链表查找运算报SIGSEGV错误?
1
C语言:单链表输出显示问题
1
有一个单链表L,假设结点值为整,怎么设计一个尽可能高效的算法将所有值小于0的结点移到所有值大于0的结点前面?
1
c语言单链表每次进行查找操作和排序操作的时候程序就闪退
1
如何正确创建一个单链表(学生表)?
2
一、 创建一个字符单链表,实现对字符的插入、删除、查找、元素个数的统计等基本操作,要求为用户提供选择式菜单?
0
单链表中的插入和删除
3
单链表中我想删除一个数据域的值为x的节点编写了这个函数运行出来不能实现这个功能请问为什么?大佬们
1
验证线性表及其上的基本操作。
2
C语言fopen打开文件失败
1
请求大佬支援!!!单链表报错
1
请求大佬支援!!!单链表报空指针异常