Как заказать динамические структуры в Java - PullRequest
1 голос
/ 28 марта 2012

Я готовился к тесту Java и нашел упражнение, в котором у меня есть стек чисел (то есть 2-4-1-5-3, где 2 - первый, который был вставлен, и 3 - одинвы можете заглянуть), и круговой список символов (то есть, a-> d-> c-> b-> e->, являющийся первым узлом), поэтому, если первое число в стеке равно 3, у меня естьвставить в простой список символ № 3, который является c.Таким образом, проблема заключается в том, что упражнение должно быть выполнено без использования каких-либо дополнительных структур, таких как дополнительный список или дополнительный стек.Я сомневаюсь, как мне достичь номера 1 в стеке, не потеряв номер 3 и номер 5 и не поместив их в привычную структуру.

Заранее спасибо.

Ответы [ 3 ]

0 голосов
/ 28 марта 2012

Мне нужно вставить в простой список символ номер 3, который имеет вид c

. Может быть, я неправильно понял ваш пример, но вы можете создать список с определенным числом (пусто)узлы.Вы уже знаете, сколько узлов.
Тогда, например, если первый номер стека равен 3, вставьте c в третий узел результирующего списка и т. Д.

Как только вы закончите, список будетотсортировано после ввода каждого номера в соответствующий узел.

0 голосов
/ 28 марта 2012

Вы можете использовать рекурсию и хранить их локально в стеке вызовов.

List<Character> charList;

func() {
    Stack<Integer> indexList = new Stack<Integer>();
    indexList.addAll(Arrays.asList(2,4,1,5,3));
    charList = new ArrayList<Character>();
    charList.addAll(Arrays.asList('a','d','c','b','e'));

    recurse(indexList,0);

    for(char c : charList) {
        System.out.println(c);
    }
}

private void recurse(Stack<Integer> indexList, int index){
    int indexChar = indexList.pop();
    char retChar = charList.get(indexChar -1);  
    if(!indexList.isEmpty()) {
        recurse(indexList, (index + 1));
    }       
    charList.set(index, retChar);
}
0 голосов
/ 28 марта 2012

Напишите рекурсивную функцию и используйте стек для вашего списка

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...