-
-
-
Mój problem jest prosty - nie potrafię w javie utworzyć konstrukcji, która będzie listą cykliczną. Symulację takowej listy łatwo zrobić. Chciałbym po prostu mieć gotowe metody operujace, np. Dodawanie na koniec, usuwanie bieżącego elementu.
Albo gotowy program, wtedy obejrzę jak to ma wyglądać w praktyce.
d41d8cd98f00b204e9800998ecf8427e
-
-
-
Kod: | http://rafb.net/p/Mmdu0i72.html |
powinno Ci sie przydac
d41d8cd98f00b204e9800998ecf8427e
-
-
-
404 - file not found. Szkoda.
d41d8cd98f00b204e9800998ecf8427e
-
-
-
Kod: |
public class Lista
{
private Element _poczatek;
private int _size;
public Lista(){
_poczatek = new Element();
_size = 0;
}
public int size(){
return _size;
}
public boolean pusta(){
return _poczatek == null;
}
public void dodaj(Object value){
if(_size > 0){
_poczatek.setNext(new Element(value, _poczatek.getNext()));
_poczatek = _poczatek.getNext();
}
else{
_poczatek.setValue(new Element(value));
_poczatek.setNext(_poczatek);
}
_size++;
}
public Object premier(int p){
while(_size > 1){
przesun(p);
usun();
}
return _poczatek.getValue();
}
public Object usun(){
if(_size == 0) return null;
Object tmp = _poczatek.getNext().getValue();
_poczatek.setNext(_poczatek.getNext().getNext());
_size--;
return tmp;
}
public void przesun(int k){
if (_size > 0){
for(int i = 1 ; i < k ; i++)
_poczatek = _poczatek.getNext();
}
}
public void wyswietl(){
for (int i = 0 ; i < _size ; i++){
_poczatek = _poczatek.getNext();
System.out.println(_poczatek.getValue());
}
}
}
|
d41d8cd98f00b204e9800998ecf8427e
-
-
-
dam coś od siebie:
Kod: | package Queue;
public interface MyQueue<E>
{
public boolean isEmpty();
public boolean isFull();
public void enqueue(E x);
public E dequeue() throws EmptyQueueException;
public E first();
public String toString();
}
implementacja tablicowa:
package Queue;
@SuppressWarnings("unchecked")
public class QueueArray<E> implements MyQueue
{
private E[] _array;
private int _size;
private int _first;
private int _last;
public QueueArray(int max)
{
_array = (E[]) new Object[max];
_size = 0;
_first = 0;
_last = 0;
}
public boolean isEmpty()
{return (_size == 0) && (_array.length != 0);}
public boolean isFull()
{ return _size == _array.length; }
public void enqueue(Object x)
{
if(isEmpty())
{
_array[_size++] = (E) x;
}
else
{
if(!isFull())
{
if(_last < _array.length - 1)
_array[++_last] = (E) x;
else
_array[(_last = 0)] = (E) x;
_size++;
}
}
}
public E dequeue() throws EmptyQueueException
{
if(isEmpty()) throw new EmptyQueueException();
E x = _array[_first++];
if(_first == _array.length)
_first = 0;
if(_size == 1)
{
_last = _first;
_array[_first] = null;
}
--_size;
return x;
}
public E first()
{ return _array[_first]; }
public String toString()
{
String s ="";
if(_size == 0)
s = "Kolejka pusta, nie mam co drukowac!";
else
if(_first <= _last)
for(int i=_first; i<=_last; i++)
s += _array[i]+", ";
else
{
for(int i=_first; i<_array.length; i++)
s += _array[i]+", ";
for(int i=0; i<=_last; i++)
s += _array[i]+", ";
}
return s;
}
}
implementacja listowa:
package Queue;
@SuppressWarnings("unchecked")
public class QueuePtr<E> implements MyQueue
{
private Node _head;
private Node _tail;
public QueuePtr()
{ _tail = _head = new Node(null); }
public QueuePtr(E value)
{ _tail = _head = new Node(value);}
private class Node
{
E _value;
Node _next;
public Node(E value)
{
_value = value;
_next = null;
}
public Node(E value, Node next)
{
_value = value;
_next = next;
}
}
public boolean isEmpty()
{ return _head._next == null; }
public boolean isFull()
{ return false; }
public void enqueue(Object x)
{ _tail = _tail._next = new Node((E) x); }
public E dequeue() throws EmptyQueueException
{
if(_head._next == null) throw new EmptyQueueException();
E val = _head._next._value;
_head._next = _head._next._next;
if(_head._next == null) _tail = _head;
return val;
}
public E first()
{ return _head._next._value; }
public String toString()
{
String s = "";
try
{
Node el = _head._next;
do
s += el._value+", ";
while((el = el._next) != null);
} catch(NullPointerException e)
{s = "Kolejka jest pusta. Nie mam nic do wydrukowania!";}
return s;
}
} |
d41d8cd98f00b204e9800998ecf8427e
-
-
-
Dzięki wielkie, obczaję.
d41d8cd98f00b204e9800998ecf8427e
Powered by phpBB modified by Przemo © 2003 phpBB Group. Then, after many years modified again, this time by Piotrek © 2014 Strona wygenerowana w 23,7ms. Zapytań do SQL: 14
|