• Tidak ada hasil yang ditemukan

Linked List

N/A
N/A
Protected

Academic year: 2025

Membagikan "Linked List"

Copied!
11
0
0

Teks penuh

(1)

CSC 113   Tutorial 11

Linked List

(2)

Student - id : String

!

- name : String

!

- grade : double

!

- level : int

+ Student(id : String, name : String, grade : double, level : int)

!

+ Student(s : Student)

!

+ display()

!

+ Setters/getters

StudentList - head : Node

!

-current : Node

+ StudentList()

!

+ insertAtFront(s : Student) : void

!

+ insertAtBack(s : Student) : void

!

+ removeFromFront() : Student

!

+ removeFromBack() : Student

!

+ size() : int

!

+ doesExist(id : String) : Boolean

!

+ isEmpty() : Boolean

!

+ displayAll() : void

!

+ displayStudent(id : String) : void Node

- data : Student

!

- next : Node

+ Node(s : Student)

!

+ Setters/getters
(3)

Class Student

Student

- id : String

!

- name : String

!

- grade : double

!

- level : int

+ Student(id : String, name : String, grade : double, level : int)

!

+ Student(s : Student)

!

+ display()

!

+ Setters/getters public class Student {

private String id;

private String name;

private double gpa;

private int level;

public Student() {}

public Student(String name, String id, double gpa, int level) {

this.id = id; this.name = name;

this.gpa = gpa; this.level = level;

}

public Student(Student s) {

id = s.id; name = s.name;

gpa = s.gpa; level = s.level;

}

public void display() {

System.out.println("ID: "+id);

System.out.println("Name: "+name);

System.out.println("level: "+level);

System.out.println("GPA: "+gpa);

}

(4)

Class Node

Node

- data : Student

!

- next : Node

+ Node(s : Student)

!

+ Setters/getters

public class Node {

private Student data;

private Node next;

public Node(Student s) {

data = s;

next = null;

}

(5)

Class StudentList

StudentList - head : Node

!

-current : Node

+ StudentList()

!

+ insertAtFront(s : Student) : void

!

+ insertAtBack(s : Student) : void

!

+ removeFromFront() : Student

!

+ removeFromBack() : Student

!

+ size() : int

!

+ doesExist(id : String) : Boolean

!

+ isEmpty() : Boolean

!

+ displayAll() : void

!

+ displayStudent(id : String) : void public class StudentList {

private Node head, current;

public StudentList() { head = current = null; } public void insertAtFront(Student s)

{

Node n = new Node(s);

n.setNext(head);

head = n;

}

public void insertAtBack(Student s) {

Node n = new Node(s);

if(isEmpty()) { insertAtFront(s); return; } current = head;

while(current.getNext() != null) { current = current.getNext(); } current.setNext(n);

}

Insert

(6)

Class StudentList

StudentList - head : Node

!

-current : Node

+ StudentList()

!

+ insertAtFront(s : Student) : void

!

+ insertAtBack(s : Student) : void

!

+ removeFromFront() : Student

!

+ removeFromBack() : Student

!

+ size() : int

!

+ doesExist(id : String) : Boolean

!

+ isEmpty() : Boolean

!

+ displayAll() : void

!

+ displayStudent(id : String) : void

Remove

public Student removeFromFront() {

Node n = head;

head = head.getNext();

return n.getData();

}

public Student removeFromBack() {

Student result;

Node n = head;

current = head;

if(isEmpty()) return null;

while(current.getNext() != null) {

n = current;

current = current.getNext();

}

result = current.getData();

if(size() == 1) head = null;

else n.setNext(null);

return result;

}

(7)

Class StudentList

StudentList - head : Node

!

-current : Node

+ StudentList()

!

+ insertAtFront(s : Student) : void

!

+ insertAtBack(s : Student) : void

!

+ removeFromFront() : Student

!

+ removeFromBack() : Student

!

+ size() : int

!

+ doesExist(id : String) : Boolean

!

+ isEmpty() : Boolean

!

+ displayAll() : void

!

+ displayStudent(id : String) : void

size, doesExist

public int size() {

int count = 0;

current = head;

while(current != null) {

count++;

current = current.getNext();

}

return count;

}

public boolean doesExist(String id) {

current = head;

while(current != null) {

if(current.getData().getId().equals(id)) return true;

current = current.getNext();

}

return false;

}

(8)

Class StudentList

StudentList - head : Node

!

-current : Node

+ StudentList()

!

+ insertAtFront(s : Student) : void

!

+ insertAtBack(s : Student) : void

!

+ removeFromFront() : Student

!

+ removeFromBack() : Student

!

+ size() : int

!

+ doesExist(id : String) : Boolean

!

+ isEmpty() : Boolean

!

+ displayAll() : void

!

+ displayStudent(id : String) : void

isEmpty, displayAll

public boolean isEmpty()

{ return head == null ; }

public void displayAll() {

current = head;

System.out.println("---");

while(current != null) {

current.getData().display();

current = current.getNext();

} }

(9)

Class StudentList

StudentList - head : Node

!

-current : Node

+ StudentList()

!

+ insertAtFront(s : Student) : void

!

+ insertAtBack(s : Student) : void

!

+ removeFromFront() : Student

!

+ removeFromBack() : Student

!

+ size() : int

!

+ doesExist(id : String) : Boolean

!

+ isEmpty() : Boolean

!

+ displayAll() : void

!

+ displayStudent(id : String) : void

displayStudent

public void displayStudent(String id) {

current = head;

while(current != null) {

if(current.getData().getId().equals(id)) {

current.getData().display();

return;

}

current = current.getNext();

}

System.out.println("Student with ID "+id+" does not exist.");

}

(10)

Main

StudentList sl = new StudentList();

System.out.println("\nsize = "+sl.size());

sl.insertAtFront(new Student("ali","123",3,3));

sl.displayAll();

sl.insertAtFront(new Student("majed","456",4,4));

sl.displayAll();

sl.insertAtBack(new Student("bandr","789",5,4));

sl.displayAll();

System.out.println("\nsize = "+sl.size());

System.out.println("Does 123 exist? "+sl.doesExist("123"));

System.out.println("Does 321 exist? "+sl.doesExist("321"));

System.out.println("\nPrint 456: "); sl.displayStudent("456");

System.out.println("\nPrint 654: "); sl.displayStudent("654");

sl.removeFromFront();

sl.displayAll();

sl.removeFromBack();

sl.displayAll();

(11)

Main   output

size = 0

--- ID: 123

Name: ali level: 3 GPA: 3.0

--- ID: 456

Name: majed level: 4 GPA: 4.0 ID: 123 Name: ali level: 3 GPA: 3.0

--- ID: 456

Name: majed level: 4 GPA: 4.0 ID: 123 Name: ali level: 3 GPA: 3.0

ID: 789

Name: bandr level: 4 GPA: 5.0

!

size = 3

Does 123 exist? true Does 321 exist? false

!

Print 456:

ID: 456

Name: majed level: 4 GPA: 4.0

!

Print 654:

Student with ID 654 does not exist.

--- ID: 123

Name: ali level: 3 GPA: 3.0 ID: 789

Referensi

Dokumen terkait

Operasi dasar linked list.. Menambah

Senarai Berantai Berputar (circular link list) merupakan bentuk pengembangan senarai berantai (link list) yang pointer elemen terakhirya (last element) menunjuk

Berikut ini adalah Algoritma untuk menyisipkan I TEM ke dalam list, tepat sesudah simpul A, atau jika LOC = NULL, maka I TEM disisipkan sebagai simpul pertama dari list.. Misalkan

Penghapusan data di akhir adalah proses menghapus simpul terakhir (yang ditunjuk oleh variabel pointer Akhir), sehingga variabel pointer Akhir akan berpindah ke simpul

Karena medan sambungan dari simpul sebelum simpul yang dihapus harus terhubung ke simpul berikutnya dari simpul yang dihapus, maka harus ada pointer bantuan

Operasi menyisip di tengah pada circular singly linked list pada prinsipnya hampir sama dengan menyisip pada linear singly linked list yang pada implementasinya membutuhkan

Penyisipan ditengan pada single linked list adalah dengan cara menyisipkan data baru setelah elemen yang ditunjuk oleh variabel bantu pada list, kemudian pointer variabel

procedure penghancuran( penghancuran( I/O I/O backup : dataTamu, backup : dataTamu, I/O I/O awal,akhir : pointer) awal,akhir : pointer).. tekan Enter untuk mengulang'), else