当前位置: 首页 > 知识库问答 >
问题:

如何找到并获取用户输入单链表的中间元素?

齐承泽
2023-03-14

我正在制作一个程序,让用户添加整数元素,获取其长度,并获取其中间元素。我的问题是,我不知道写什么来获得中间元素。我试图在互联网上搜索如何下载,但我找不到适合这个程序的代码行。

如何找到并获取用户输入单链表的中间元素?

 import java.util.Scanner;

 class Node
{
 int data;
 Node link; 
 Node next;
 public Node()
{
    link = null;
    data = 0;        
    next = null; 
   
}    
 public Node(int d,Node n)
{
    data = d;
    link = n;
}    
 public void setLink(Node n)
{
    link = n;
}    
 public void setData(int d)
{
    data = d;
}    
 public Node getLink()
{
    return link;
}    
 public int getData()
{
    return data;
}
}

 class LinkedList
{
  Node start;
  Node end;
  public int length;


 public LinkedList()
{
    start = null;
    end = null;
    length = 0;
}    
public int getLength()
{
    return length;
}    

 public void insert(int val)
{
     Node nptr = new Node(val,null);    
    length++ ;    
    if(start == null) 
    {
        start = nptr;
        end = start;
    }
    else 
    {
        end.setLink(nptr);
        end = nptr;
    }
}
 public void display()
{
    System.out.print("\nSingly Linked List = ");
       
    if (start.getLink() == null) 
    {
        System.out.println(start.getData() );
        return;
    }
    Node ptr = start;
    System.out.print(start.getData()+ " -> ");
    ptr = start.getLink();   
    while (ptr.getLink() != null)
    {
        System.out.print(ptr.getData()+ " -> ");
        ptr = ptr.getLink();
    }
    System.out.print(ptr.getData()+ " -> null\n");
 }
 }
  public class SinglyLinkedList
{    
  public static void main(String[] args)
 {             
    Scanner scan = new Scanner(System.in);
    LinkedList list = new LinkedList();         
    char ch;
    do
    {
        System.out.println("\nSingly Linked List\n");                     
        System.out.println("Enter integer element to insert:");
        list.insert( scan.nextInt() );       
        System.out.println("Length of the Linked List: "+ list.getLength() ); 
        System.out.println("Middle Element of the Linked List: ");  
        list.display();            
        System.out.println("\nDo you want to continue (Type y or n) \n");
        ch = scan.next().charAt(0);                        
    } while (ch == 'Y'|| ch == 'y');               
}
}

共有1个答案

巫马善
2023-03-14

由于您已经在类中维护了length属性,因此我们可以使用该属性查找链接列表的中间部分。如果列表中有偶数个元素,则返回ceil(mid),即1-

public Node getMid() {
    if (length == 0) return null;
    int mid = length / 2;
    Node ptr = start;
    while (mid-- > 0) {
        ptr = ptr.getLink();
    }
    return ptr;
}

 类似资料:
  • 所以我的问题很简单。 如何从表单中获取用户输入并将其放入变量中? 我想用香草JS和没有库来做这件事。 多谢了。

  • 在单链表中,我们知道最后一个节点的下一个指向,这样我们就可以通过遍历找到它。 如果单链表的最后一个节点指向某个中间节点,那么我们如何找到最后一个节点?

  • 问题内容: 我正在尝试创建一个基本菜单,以检查输入的变量是否与定义的变量匹配。如果定义了变量,则获取已定义变量的数据。 例。 我输入 应该相等 问题答案: 这似乎是您要找的东西: 但是,这可能不是最好的策略,因为错字或恶意用户很容易使您的代码崩溃,系统过载或执行他们喜欢的任何其他讨厌的事情。对于这种特殊情况,更好的方法可能是

  • 在下面的例子中,我试图接受用户的单字符输入,但是当运行程序时,我得到do...而循环执行多次。请参阅下面程序的结果。 如果有人能帮我找到答案,如何解决这个问题?

  • 问题内容: 如何在输入框中获取输入框中的值? 问题答案: 每次释放键都会触发onkeyup。虽然它看起来是解决方案,但它仍然存在一些问题。 如果用户使用箭头移动光标,则会触发该光标,并且您必须检查自己是否字段值没有更改。 如果用户使用鼠标在输入字段中复制/粘贴一个值,或者在浏览器中单击“撤消/重做”,则不会触发。 就像在Mac或Google文档中一样,我不想保存按钮来在我们的应用程序中提交表单,这

  • 问题内容: 我正在使用Android Marshmallow和Moto G4以及用于测试的设备。 我想创建一个应用程序,它将使用指纹输入并保存在本地数据库(sqlite)中,或者到数据库,我的意思是我们可以接受并保存指纹的类型是什么? 问题答案: 您无法从android Fingerprint API获取指纹模板或图像。指纹数据由android系统存储在安全的地方,无法访问。 但是您可以要求系统对