使用java合并排序链表

时间:2016-05-22 11:43:53

标签: java linked-list mergesort

"no match for operator 'operator=' (operand types are ;student' and 'student*' )". In the insert function, the error message is "error: request for member 'id' in 's.std::basic_string<_CharT, _Traits, _Alloc>::operator[]<char, std::char_traits<char>, std::allocator<char> >(((std::basic_string<char>::size_type)((StudentArray*)this)‌​->StudentArray::used‌​))', which is of non-class type 'char'|"

抛出堆栈溢出错误。请帮我纠正我的解决方案 我首先将链表分成两半,然后递归发送它们 之后,我将我的两个排序链表合并在一起。 当我以递归方式调用我的第一个列表时,错误显示

1 个答案:

答案 0 :(得分:0)

如果你有一个包含2个元素的列表,它希望继续调用该方法:

   while (temp2 != null && temp2.next != null) {
        temp1 = temp1.next;
        temp2 = temp2.next.next;
        count++;
    }

count将等于“1”

   Node<Integer> list1 = head;
    Node<Integer> listTemp1 = list1;
    while (count > 0) {
        listTemp1 = listTemp1.next;
        count--;
    }

listTemp1将指向第二个节点

   Node<Integer> list2 = listTemp1.next;
    listTemp1.next = null;
    mergeSort(list1);
    mergeSort(list2);

所以从我看到的list1将继续指向第一个节点,list2将一直指向null,请注意listTemp1.nex = null实际上没有做什么因为它已经指向null

你可以通过递减计数来解决这个问题。