有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java实现了一个带有3个字符串值的链表

我试图实现一个单链表,在每个元素中保存多个字符串值(First、Middle、Last Name),这样我就可以对元素中的不同字符串进行排序和搜索(Order by Last Name,search for Middle Name,等等)

我创建了一个名称类来保存3个字符串(first、middle、last)和每个字符串的observer方法

有人能帮我修改我的MergeSort以按姓氏排序(name.getLastName())吗?如果我能弄明白这一点,它应该会让我走上正确的轨道,用中间名方法创建搜索

提前谢谢

public class SinglyLinkedList {

  private class Link {

    public Name data;
    public Link next;

    Link(Name data) 
    {
        this(data, null);
    }

    Link(Name d, Link n) 
    {
        data = d;
        next = n;
    }

  }

  private Link first_;

  // Creates an empty list
  public void List() 
  {
      first_ = null;
  }

// Returns true iff this list has no items
  public boolean isEmpty() 
  {
      return first_ == null;
  }

// Data is put at the front of the list

  public void insertFront(Name data) 
  {
      first_ = new Link(data, first_);
  }

// Removes first element
  public String removeFront() 
  {     
        Name data = first_.data;
        first_ = first_.next;
        return data;

  }

  public Link MergeSort(Link headOriginal)
  {

    if (headOriginal == null || headOriginal.next == null)
    {
        return headOriginal;
    }

    Link a = headOriginal;
    Link b = headOriginal.next;

    while ((b != null) && (b.next != null))
    {
        headOriginal = headOriginal.next;
        b = (b.next).next;
    }

    b = headOriginal.next;

    headOriginal.next = null;

    return merge(MergeSort(a), MergeSort(b));

  }

  public Link merge(Link a, Link b)
  {
      Link temp = new Link();
      Link head = temp;
      Link c = head;

      while ((a != null) && (b != null))
      {

          if (a.item <= b.item)
          {
              c.next = a;
              c = a;
              a = a.next;
            }
            else
            {
                c.next = b;
                c = b;
                b = b.next;
            }
        }

        c.next = (a == null) ? b : a;

        return head.next;
    }
} 

共 (1) 个答案

  1. # 1 楼答案

    I'm attempting to implement a singly linked list to hold multiple String values in each element (First, Middle, Last Name)

    不要这样做。您已经描述了一个逻辑类型,例如aPersonalName,它有三个字符串成员。因此,将该类型创建为一个单独的类型。然后可以使用任何正常的内置集合,例如Deque<PersonalName>List<PersonalName>。(你需要一个链表有什么特别的原因吗?)

    <> >每当你发现自己有一个值集合时,总是相同的长度,总是对每个值具有相同的明确含义,强烈地考虑创建一个类型来封装它。