好吧,伙计们,我需要写一个方法;MyLinkedList getFirst(int n)–返回前n个元素的链接列表。如果列表为空或n>size,则返回null。
我迷路了,我已经做了添加、删除、添加到中间、打印一系列元素等方法,但这一个让我卡住了。。
到目前为止,我只有:
public MyLinkedList<E> getFirst(int n) {
if(n > size ) {
return null;
}
Node<E> current = head;
for (int i = 0; i == n; i++) {
current.next = new Node<E>(e);
}
}
我知道这个代码是非常错误的,但我所能想到的就是在这个任务上工作了一段时间,我只是没有动力了,我想哈哈
谢谢你的帮助。
- 创建一个空列表
- 将标题添加到列表中
- 继续将下一个节点添加到列表中,直到拥有前n个节点为止
public MyLinkedList getFirstN(int n) {
MyLinkedList firstNList=new MyLinkedList();//create an empty list
if(n>size)
firstNList= null;
else {
Node tmp=head; //initialise tmp Node to the head(beginning) of list
for(int i=0;i<n;i++) {
firstNList.add(tmp);//add current node to the end of list
tmp=tmp.getNext();
}
}
return firstNList;
}
实现add(Node node)
方法,将Node
附加到列表的末尾。
您可以将其用作原型并继续进行任何操作
public class Node {
private int data;
private Node next;
public Node(int data) {
this.data = data;
}
public int getData() {
return data;
}
public void setData(int data) {
this.data = data;
}
public Node getNext() {
return next;
}
public void setNext(Node next) {
this.next = next;
}
public Node(int data, Node next) {
this.data = data;
this.next = next;
}
}
public class LinkedList {
private Node start;
public LinkedList() {
start = null;
}
public void insert(int x) {
if(start == null) {
start = new Node(x, start);
} else {
Node temp = start;
while(temp.getNext() != null) {
temp = temp.getNext();
}
Node newNode = new Node(x,null);
temp.setNext(newNode);
}
}
public void getFirst() {
if(start == null) {
System.out.println("n List is empty !!");
}
else {
Node temp = start;
System.out.println("n First Element is --->" + temp.getData());
}
}
}
public class MainClass {
public static void main(String[] args) {
LinkedList ll = new LinkedList();
System.out.println("n--- Inserting 100 ---n");
ll.insert(100);
ll.insert(101);
ll.insert(102);
ll.insert(103);
System.out.println("n--- First Element ---n");
ll.getFirst();
}
}