gpt4 book ai didi

java - 链接列表的编码约定

转载 作者:行者123 更新时间:2023-12-01 12:25:25 25 4
gpt4 key购买 nike

我一直在实现this Java 面试问题。一个相当简单的问题,带有额外的大小限制:

Find the Nth Node from the end of a Linked List where the size of the Linked List is unknown?

我不关心这个问题的解决方案,因为我已经弄清楚了。

相反,我想知道我的实现是否维护了经验丰富的编码人员在编码与链接列表及其实现相关的问题时所维护的编码约定?。这是我对上述问题的实现:

import java.io.*;
class NthNodeFromEnd<AnyType>
{
private Node<AnyType> head;
private Node<AnyType> pointer;
private class Node<AnyType>
{
protected AnyType item;
protected Node<AnyType> next;
}
void push(AnyType item)
{
if(isEmpty())
{
head = new Node<AnyType>();
head.item = item;
head.next = null;
pointer = head;
}
else
{
Node<AnyType> newNode = new Node<AnyType>();
newNode.item = item;
newNode.next = null;
pointer.next = newNode;
pointer = pointer.next;
}
}
boolean isEmpty()
{
return head == null;
}
AnyType printNthLastNode(int n)
{
Node<AnyType> ptr1 = head;
Node<AnyType> ptr2 = head;
for(int i =0;i<n;i++)
{
ptr1 = ptr1.next;
}
while(ptr1!=null)
{
ptr1 = ptr1.next;
ptr2 = ptr2.next;
}
return ptr2.item;
}
public static void main(String args[])
{
NthNodeFromEnd<Integer> obj = new NthNodeFromEnd<Integer>();
obj.push(1);
obj.push(2);
obj.push(3);
obj.push(4);
obj.push(5);
obj.push(6);
obj.push(7);
System.out.println("The nth item is = "+obj.printNthLastNode(5));
}
}

附注- 我知道 Java 中有一个内置的链表实现,但我不想使用它。我想知道这个实现是否可行问题的答案足够好还是有更好的方法来解决链表相关问题?

最佳答案

关于代码约定:

  • 泛型类型通常定义为单个大写字母:E 或 T,但不是 AnyType,它看起来像具体类型。
  • 运算符应被空格、分号后跟空格等包围。例如,for(int i =0;i<n;i++)应该是for (int i = 0; i < n; i++)
  • 一种方法 printNthLastNode()应该打印倒数第 n 个节点,而不是返回它。返回它的方法应命名为 getNthLastNode()findNthLastNode() 。顺便说一句,此方法不返回节点,而是返回存储在列表中的
  • 方法通常不应是包私有(private)的。它们通常应该是公共(public)的或私有(private)的。
  • Java 中的通常约定是在行尾使用左大括号,而不是在下一行的开头。
  • 你的方法printNthLastNode()如果列表为空或不够大,则会失败并出现 NPE。应使用更好的异常类型来表明此问题。
  • 该类不应导入 java.io.* ,因为它不使用 java.io 中的任何类。通常不应导入包。上课应该。
  • String[] argsString args[] 更具可读性,并且更传统。
  • Node 类应该是静态的:它不使用其封闭类型的任何实例成员。

也就是说,通过发布的代码,面试官应该看到您了解链表的工作原理、指针的工作原理以及泛型类型。

关于java - 链接列表的编码约定,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26384830/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com