Java从链表中删除节点并将删除的节点存储在堆栈中

问题描述 投票:0回答:1

如何有效地将链接列表中删除的值存储到堆栈中。存储后,我想对其执行撤消操作,以便将已删除的节点从堆栈中返回到我删除它的链接列表中。

package DataStructure.LinkedListPractise;

import java.util.ArrayList;
import java.util.List;

public class practiseLinkedList {
    public static void main(String[] args) {
        List newList = new ArrayList();
        newList.add(32);
        newList.add(388);
        newList.add(129);


        for (int i = 0; i < newList.size(); i++) {
            System.out.println(newList.get(i));
        }
        newList.remove(1);
        System.out.println();
    }
}
java
1个回答
0
投票

您可以跟踪已删除的索引和值的另一个列表,然后您可以按顺序重新应用它们:

    public static void main(String[] args) {
        List newList = new ArrayList();
        newList.add(32);
        newList.add(388);
        newList.add(129);
        System.out.println("Full list: " + newList);
    
        List<int[]> history = new ArrayList();
        history.add(0, new int[]{1, (int) newList.remove(1)});
        System.out.println("Remove: 388 " + newList);
        history.add(0, new int[]{0, (int) newList.remove(0)});
        System.out.println("Remove: 32 " + newList);
        
        int[] lastItem = history.remove(0);
        newList.add(lastItem[0], lastItem[1]);
        System.out.println("Return: 32 " + newList);
        
        lastItem = history.remove(0);
        newList.add(lastItem[0], lastItem[1]);
        System.out.println("Return: 388 " + newList);
    }
Full list: [32, 388, 129]
Remove: 388 [32, 129]
Remove: 32 [129]
Return: 32 [32, 129]
Return: 388 [32, 388, 129]
© www.soinside.com 2019 - 2024. All rights reserved.