logo

Јава Куеуе

Ред је још једна врста линеарне структуре података која се користи за складиштење елемената као и свака друга структура података, али на одређени начин. Једноставним речима, можемо рећи да је ред врста структуре података у програмском језику Јава која чува елементе исте врсте. Компоненте у реду се чувају у ФИФО понашању (Фирст Ин, Фирст Оут). Постоје два краја у колекцији редова, односно, предњи и задњи. Ред има два краја који је предњи и задњи.

Следећа слика савршено описује својство ФИФО (Фирст Ин, Фирст Оут) Јава реда.

Јава Куеуе

Као што је објашњено на претходној слици, можемо видети да је ред линеарна структура података са два терминала, односно, почетак (предњи) и крај (позади). Компоненте се додају унутар реда са задњег краја реда, а компоненте се издвајају са предњег краја реда.

Ред је интерфејс у Јава који припада пакету Јава.утил . Такође проширује интерфејс колекције.

мл у оз

Генерички приказ Јава Куеуе интерфејса је приказан у наставку:

 public interface Queue extends Collection 

Као што смо горе дискутовали да је Ред интерфејс, стога такође можемо рећи да се ред не може инстанцирати јер се интерфејси не могу инстанцирати. Ако корисник жели да имплементира функционалност Куеуе интерфејса у Јави, онда је обавезно имати неке чврсте класе које имплементирају Куеуе интерфејс.

У програмском језику Јава, постоје две различите класе које се користе за имплементацију интерфејса Куеуе. Ове класе су:

Јава Куеуе

Карактеристике Јава реда

Јава Куеуе се може сматрати једном од најважнијих структура података у свету програмирања. Јава Куеуе је привлачан због својих својстава. Значајна својства структуре података Јава Куеуе-а су дата на следећи начин:

  • Јава Куеуе поштује ФИФО (Фирст Ин, Фирст Оут) начин. Означава да се елементи уносе у ред на крају и елиминишу са предње стране.
  • Јава Куеуе интерфејс даје сва правила и процесе интерфејса колекције као што су укључивање, брисање итд.
  • Постоје две различите класе које се користе за имплементацију интерфејса Куеуе. Ове класе су ЛинкедЛист и ПриоритиКуеуе.
  • Осим ове две, постоји класа која је ред за блокирање низа који се користи за имплементацију интерфејса Куеуе.
  • Постоје две врсте редова, неограничени редови и ограничени редови. Редови који су део пакета јава.утил познати су као неограничени редови, а ограничени редови су редови који су присутни у пакету јава.утил.цонцуррент.
  • Декуе или (двострани ред) је такође тип реда који носи укључивање и брисање елемената са оба краја.
  • Декуе се такође сматра безбедним за нити.
  • Редови за блокирање су такође један од типова редова који су такође безбедни за нити. Редови за блокирање се користе за имплементацију упита произвођача-потрошача.
  • Редови за блокирање не подржавају нулте елементе. У редовима за блокирање, ако се покуша било који рад сличан нултим вредностима, тада се такође баца НуллПоинтерЕкцептион.

Имплементација реда чекања

Класе које се користе у имплементацији Куеуе

Класе које се користе за имплементацију функционалности реда су дате на следећи начин:

Интерфејси који се користе у имплементацији Куеуе

Јава интерфејси се такође користе у имплементацији Јава реда. Интерфејси који се користе за имплементацију функционалности реда су дати на следећи начин:

Јава Куеуе
  • О чему
  • Ред за блокирање
  • Блоцкинг Декуе
Јава Куеуе

Методе класе Јава реда чекања

У Јава реду, постоји много метода које се врло често користе. Интерфејс реда чекања промовише различите методе као што су уметање, брисање, пеек, итд. Неке од операција Јава реда изазивају изузетак, док неке од ових операција враћају одређену вредност када се програм заврши.

системски софтвер

Напомена – У Јава СЕ 8 нема промена у колекцији Јава редова. Ове методе које су дефинисане у наставку су даље припремљене у наредним верзијама програмског језика Јава. На пример, Јава СЕ 9.

Различите методе Јава реда су дефинисане у наставку:

Метод Прототип методе Опис
додати боолеан адд(Е е) Додаје елемент е у ред на крају (репу) реда без кршења ограничења капацитета. Враћа тачно ако је успех или ИллегалСтатеЕкцептион ако је капацитет исцрпљен.
завирити Е пеек() Враћа главу (предња страна) реда без уклањања.
елемент Е елемент() Изводи исту операцију као и метода пеек (). Избацује НоСуцхЕлементЕкцептион када је ред празан.
уклонити Е уклони() Уклања главу реда и враћа је. Избацује НоСуцхЕлементЕкцептион ако је ред празан.
анкета Е анкета() Уклања главу реда и враћа је. Ако је ред празан, враћа се нулл.
Понуда логичка понуда (Е е) Уметните нови елемент е у ред без кршења ограничења капацитета.
величина инт сизе() Враћа величину или број елемената у реду.

Имплементација низа Јава реда чекања

Имплементација реда чекања није тако једноставна као имплементација стека.

прикажи корисницима мискл

Да бисмо имплементирали ред помоћу низова, прво декларишемо низ који садржи н број елемената.

Затим дефинишемо следеће операције које ће се извршити у овом реду.

1) У реду: Операција за уметање елемента у ред је Енкуеуе (функција куеуе Енкуеуе у програму). За уметање елемента на задњем крају, прво морамо да проверимо да ли је ред пун. Ако је пун, онда не можемо да убацимо елемент. Ако позади

2) реп: Операција брисања елемента из реда је Декуеуе (функција куеуе Декуеуе у програму). Прво проверавамо да ли је ред празан. Да би операција декуеуа функционисала, мора постојати бар један елемент у реду.

3) Фронт: Овај метод враћа предњи део реда.

4) Дисплеј: Овај метод пролази кроз ред и приказује елементе реда.

Јава Куеуе програм

Следећи Јава програм показује имплементацију Куеуе.

КуеуеАрраиИмплементатион.јава

 class Queue { private static int front, rear, capacity; private static int queue[]; Queue(int size) { front = rear = 0; capacity = size; queue = new int[capacity]; } // insert an element into the queue static void queueEnqueue(int item) { // check if the queue is full if (capacity == rear) { System.out.printf('
Queue is full
'); return; } // insert element at the rear else { queue[rear] = item; rear++; } return; } //remove an element from the queue static void queueDequeue() { // check if queue is empty if (front == rear) { System.out.printf('
Queue is empty
&apos;); return; } // shift elements to the right by one place uptil rear else { for (int i = 0; i <rear 0 4 - 1; i++) { queue[i]="queue[i" + 1]; } set queue[rear] to if (rear < capacity) decrement rear rear--; return; print queue elements static void queuedisplay() int i; (front="=" rear) system.out.printf('queue is empty
'); traverse front and for (i="front;" i rear; system.out.printf(' %d , ', queue[i]); of queuefront() system.out.printf('
front element the queue: %d', queue[front]); public class queuearrayimplementation main(string[] args) create a capacity q="new" queue(4); system.out.println('initial queue:'); q.queuedisplay(); inserting in q.queueenqueue(10); q.queueenqueue(30); q.queueenqueue(50); q.queueenqueue(70); system.out.println('queue after enqueue operation:'); q.queuefront(); insert q.queueenqueue(90); q.queuedequeue(); system.out.printf('
queue two dequeue operations:'); pre> <p> <strong>Output:</strong> </p> <pre> Initial Queue: Queue is Empty Queue after Enqueue Operation: 10 , 30 , 50 , 70 , Front Element of the queue: 10 Queue is full 10 , 30 , 50 , 70 , Queue after two dequeue operations: 50 , 70 , Front Element of the queue: 50 </pre> <h2>Java Queue Linked List Implementation</h2> <p>As we have implemented the Queue data structure using Arrays in the above program, we can also implement the Queue using Linked List.</p> <p>We will implement the same methods enqueue, dequeue, front, and display in this program. The difference is that we will be using the Linked List data structure instead of Array.</p> <p>The below program demonstrates the Linked List implementation of Queue in Java.</p> <p> <strong>QueueLLImplementation.java</strong> </p> <pre> class LinkedListQueue { private Node front, rear; private int queueSize; // queue size //linked list node private class Node { int data; Node next; } //default constructor - initially front &amp; rear are null; size=0; queue is empty public LinkedListQueue() { front = null; rear = null; queueSize = 0; } //check if the queue is empty public boolean isEmpty() { return (queueSize == 0); } //Remove item from the front of the queue. public int dequeue() { int data = front.data; front = front.next; if (isEmpty()) { rear = null; } queueSize--; System.out.println(&apos;Element &apos; + data+ &apos; removed from the queue&apos;); return data; } //Add data at the rear of the queue. public void enqueue(int data) { Node oldRear = rear; rear = new Node(); rear.data = data; rear.next = null; if (isEmpty()) { front = rear; } else { oldRear.next = rear; } queueSize++; System.out.println(&apos;Element &apos; + data+ &apos; added to the queue&apos;); } //print front and rear of the queue public void print_frontRear() { System.out.println(&apos;Front of the queue:&apos; + front.data + &apos; Rear of the queue:&apos; + rear.data); } } class QueueLLImplementation{ public static void main(String a[]){ LinkedListQueue queue = new LinkedListQueue(); queue.enqueue(6); queue.enqueue(3); queue.print_frontRear(); queue.enqueue(12); queue.enqueue(24); queue.dequeue(); queue.dequeue(); queue.enqueue(9); queue.print_frontRear(); } } </pre> <p> <strong>Output:</strong> </p> <pre> Element 6 added to the queue Element 3 added to the queue Front of the queue:6 Rear of the queue:3 Element 12 added to the queue Element 24 added to the queue Element 6 removed from the queue Element 3 removed from the queue Element 9 added to the queue Front of the queue:12 Rear of the queue:9 </pre> <hr></rear>

Имплементација повезане листе Јава реда чекања

Како смо имплементирали структуру података Реда користећи низове у горњем програму, можемо такође имплементирати Ред користећи Линкед Лист.

У овом програму ћемо имплементирати исте методе енкуеуе, декуеуе, фронт и дисплаи. Разлика је у томе што ћемо користити структуру података повезане листе уместо низа.

изаберите више табела скл

Програм у наставку демонстрира имплементацију Куеуе-а повезане листе у Јави.

КуеуеЛЛИмплементатион.јава

 class LinkedListQueue { private Node front, rear; private int queueSize; // queue size //linked list node private class Node { int data; Node next; } //default constructor - initially front &amp; rear are null; size=0; queue is empty public LinkedListQueue() { front = null; rear = null; queueSize = 0; } //check if the queue is empty public boolean isEmpty() { return (queueSize == 0); } //Remove item from the front of the queue. public int dequeue() { int data = front.data; front = front.next; if (isEmpty()) { rear = null; } queueSize--; System.out.println(&apos;Element &apos; + data+ &apos; removed from the queue&apos;); return data; } //Add data at the rear of the queue. public void enqueue(int data) { Node oldRear = rear; rear = new Node(); rear.data = data; rear.next = null; if (isEmpty()) { front = rear; } else { oldRear.next = rear; } queueSize++; System.out.println(&apos;Element &apos; + data+ &apos; added to the queue&apos;); } //print front and rear of the queue public void print_frontRear() { System.out.println(&apos;Front of the queue:&apos; + front.data + &apos; Rear of the queue:&apos; + rear.data); } } class QueueLLImplementation{ public static void main(String a[]){ LinkedListQueue queue = new LinkedListQueue(); queue.enqueue(6); queue.enqueue(3); queue.print_frontRear(); queue.enqueue(12); queue.enqueue(24); queue.dequeue(); queue.dequeue(); queue.enqueue(9); queue.print_frontRear(); } } 

Излаз:

 Element 6 added to the queue Element 3 added to the queue Front of the queue:6 Rear of the queue:3 Element 12 added to the queue Element 24 added to the queue Element 6 removed from the queue Element 3 removed from the queue Element 9 added to the queue Front of the queue:12 Rear of the queue:9