Java 获取双链接列表的上一个元素
下面是声明我的变量的类:Java 获取双链接列表的上一个元素,java,list,sorting,Java,List,Sorting,下面是声明我的变量的类: private class MyListElement { private final Integer value; private MyListElement nextElement; private MyListElement(final Integer value) { this.value = value; } } 以下是我如何将元素添加到列表中: private void addNewElement() {
private class MyListElement {
private final Integer value;
private MyListElement nextElement;
private MyListElement(final Integer value) {
this.value = value;
}
}
以下是我如何将元素添加到列表中:
private void addNewElement() {
System.out.print("Please type the number to be added to the list: ");
Integer newValue = null;
while (newValue == null) {
try {
newValue = Integer.parseInt(userInput.nextLine());
} catch (final Exception e) {
System.out.println("Wrong value. Please insert new value.");
}
}
MyListElement newElement = new MyListElement(newValue);
if (firstElement != null) {
placeElementInList(newElement);
} else {
firstElement = newElement;
}
}
最后是问题:首先,我声明了一个变量来包含列表上的最后一个元素;没关系。但是我如何让它的前一个元素在列表中循环并反向打印它呢
private void printInReverse() {
MyListElement tmpElement = firstElement;
while (tmpElement.nextElement != null) {
tmpElement = tmpElement.nextElement;
}
MyListElement firstReverseElement = tmpElement;
MyListElement elementInList = firstReverseElement;
while (elementInList != null) {
System.out.print(elementInList.value + ", ");
elementInList = elementInList.nextElement;
}
System.out.println("");
}
“元素”是指向列表中的值的假设指针
编辑:
这是我对列表排序的方式(升序)
private void placementInList(最终MyListElement新元素){
if(newElement.value
这就是它具有双重链接的原因:您需要一个指向下一个元素和上一个元素的链接。如果我能够准确地理解您的问题,则没有其他方法。要获得以前的元素,只需向元素类添加一个新的实例变量:
私有类MyListElement{
private final Integer value;
private MyListElement nextElement;
private MyListElement prevElement;
private MyListElement(final Integer value) {
this.value = value;
}
添加第一个元素时,如下所示:
else {
firstElement = newElement;
}
您的第一个元素也是最后一个元素(链表由其第一个和最后一个元素定义)。因此,它应该类似于:
firstElement = newElement;
lastElement = firstElement;
最后,在placeElementInList(新元素)中方法,找到新元素的位置后,只需连接到上一个。在MyListElement类中需要另一个参数private MyListElement prevElement;@Aeshang好的,但它指向什么?这就是我所处的位置。在双链接列表中:first->prev为null,last->next为null。假设您有两个连续的元素p和q,然后p->next是q,q->prev是p。当然,你的上一个元素以及你如何循环下一个元素,你应该能够循环下一个元素…@deandrei,它还应该有一个头和一个尾指针…这是开始和结束元素指针。你能发布你的placeElementInList方法吗?好的,这个e previous元素是您列表中当前的最后一个元素。插入新元素时,您需要能够引用该元素。应用基本OO范例时,这应该是可能的:D@DeiAndrei是的,刚刚在问题中发布。我如何连接?
firstElement = newElement;
lastElement = firstElement;