LINUX.ORG.RU

Java, указатели, последовательные связанные списки...


0

0

С помощью последовательных связанных списков в Си и Паскале можно делать деревья. Каким образом деревья можно создавать в Java? Каким образом можно создавать последовательные связанные списки в Java?


если набрать в google "java linked list", то можно внезапно найти кучу информации и даже готовые классы.

А что в списках в java будет _принципиально_ отличаться от списков в С? Ничего.

alex_custov ★★★★★
()
Ответ на: комментарий от alex_custov

В Си есть указатели, в Java их нет. Списки я умею делать только с помощью указателей, других способов не знаю.

yantux
() автор топика
Ответ на: комментарий от yantux

в Java есть ссылки. В любой книжке это расписано. В Си ты пишешь

current->next = (struct node *)malloc(sizeof(struct node));

и сохраняешь адрес в указателе, в Java ты пишешь

node = new Node;
current->setNext(node);

и используешь ссылку.

alex_custov ★★★★★
()
Ответ на: комментарий от yantux

>В Си есть указатели, в Java их нет.

В Яве есть указатели. Только free() вызывает JVM автоматически и адресной арифметики нет.

Absurd ★★★
()
Ответ на: комментарий от yantux

> В Си есть указатели, в Java их нет

В Java только указатели и есть :) Любой класс является reference type.

tailgunner ★★★★★
()

>> Каким образом можно создавать последовательные связанные списки в Java?

Ну как дети блин. Тупо в лоб вот так:

class Node
{
    private Object val;
    private Node nextNode;

    public void setVal(Object val)
    {
        this.val = val;
    }

    public Object getVal()
    {
        return val;
    }

    public void setNext(Node next)
    {
        nextNode = next;
    }

    public Node getNext()
    {
        return nextNode;
    }
}

Или чтобы не ипать мозг заюзать таки java.util.LinkedList<T>

cathode
()
Ответ на: комментарий от yantux

> В Си есть указатели, в Java их нет.

В Java есть указатели. В Java нет арифметики указателей (и не надо!).

anonymous
()

Купи книжку по языку.

dave ★★★★★
()
Ответ на: комментарий от yantux

> Списки я умею делать только с помощью указателей, других способов не знаю.

Ты не умеешь делать списки.

anonymous
()
Ответ на: комментарий от generatorglukoff

>>В Java нет арифметики указателей (и не надо!).

>не надо - не используй, а говорить за других таки отучись.

А зачем надо - для массивов чтоли? В яве массивы есть.

Absurd ★★★
()
Ответ на: комментарий от generatorglukoff

> не надо - не используй, а говорить за других таки отучись.

Ламеришка, если нужна арифметика указателей, то не нужна Java. Это понятно всем, кроме ламеришек и тупиц (ну, типа тебя). Hint для недоумков: верификация байткода.

anonymous
()

Выдыхай.

anonymous
()
Ответ на: комментарий от Absurd

>В Яве есть указатели. >В Яве есть указатели.

http://java.sun.com/docs/white/langenv/Simple.doc2.html

2.2.9 No More Pointers

Most studies agree that pointers are one of the primary features that enable programmers to inject bugs into their code. Given that structures are gone, and arrays and strings are objects, the need for pointers to these constructs goes away. Thus, Java has no pointer data types. Any task that would require arrays, structures, and pointers in C can be more easily and reliably performed by declaring objects and arrays of objects. Instead of complex pointer manipulation on array pointers, you access arrays by their arithmetic indices. The Java run-time system checks all array indexing to ensure indices are within the bounds of the array.

You no longer have dangling pointers and trashing of memory because of incorrect pointers, because there are no pointers in Java

anonymous
()
Ответ на: комментарий от Absurd

>А зачем надо - для массивов чтоли? В яве массивы есть.

Массив хорош, если заранее знаешь число элементов списка.

anonymous
()
Ответ на: комментарий от anonymous

references - частный случай pointers. А то, что сантехники свой дебилистичный диалект выдумали и пытаются его продвигать - не оправдание для ламеризма. Указатели в Java есть, и ничего ты с этим фактом не сделаешь.

anonymous
()
Ответ на: комментарий от Cy6erBr4in

>в хацкелле, как и в других нормальных языках, есть списки... о боже, из коробки!!!

Ну, успокоил. Значит, Java - нормальный язык :)

KRoN73 ★★★★★
()
Ответ на: комментарий от KRoN73

Ты необходимые и достаточные условия не путай, да? :))

То что язык имеет списки из коробки, не говорит о его нормальности, в то же время если язык нормальный, то списки он содержит ;)

это необходимое, но не достаточное условие :-D

Cy6erBr4in ★★★
()
Ответ на: комментарий от tailgunner

оно так жжот, что я даже не решился комментировать...

Cy6erBr4in ★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.