Giáo trình Java - Lec4: Cấu trúc dữ liệu trong Java pot

91 1.4K 8
Giáo trình Java - Lec4: Cấu trúc dữ liệu trong Java pot

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

LECTURE 4 DATA STRUCTURES PHẦN 1 XÂY DỰNG MỘT SỐ CẤU TRÚC • Linked List • Stack • Queue • Tree 3 Linked List • Linked list là cấu trúc gồm các node liên kết với nhau thông qua các mối liên kết. Node cuối linked list được đặt là null để đánh dấu kết thúc danh sách. • Linked list giúp tiết kiệm bộ nhớ so với mảng trong các bài toán xử lý danh sách. • Khi chèn/xoá một node trên linked list, không phải dãn/dồn các phần tử như trên mảng. • Việc truy nhập trên linked list luôn phải tuần tự. 4 Linked List • Thể hiện Node thông qua lớp tự tham chiếu (self- referential class) class Node { private int data; private Node nextNode; // constructors and methods } 15 10 5 Linked List • Một danh sách được quản lý bởi tham chiếu tới node đầu và node cuối. H D Q firstNode lastNode 6 Cài đặt Linked List // Dinh nghia mot node trong linked list class Node { int data; Node next; Node(int value) { this(value, null); } Node(int value, Node node) { data = value; next = node; } int getData() { return data; } Node getNext() { return next; } } 7 Cài đặt Linked List // Dinh nghia lop LinkedList class DanhSach { private Node first; private Node last; public DanhSach() { first = last = null; } public boolean isEmpty() { return (first == null); } public void insertAtFront(int insertItem) { if ( isEmpty() ) first = last = new Node( insertItem ); else first = new Node( insertItem, first ); } // Dinh nghia mot node trong linked list class Node { int data; Node next; Node(int value) { this(value, null); //data = value; //next = null; } Node(int value, Node node) { data = value; next = node; } int getData() { return data; } Node getNext() { return next; } } 8 Cài đặt Linked List public void insertAtBack( int insertItem ) { if ( isEmpty() ) first = last = new Node( insertItem ); else last = last.next= new Node( insertItem ); } public int removeFromFront() { int removeItem = -1; if ( ! isEmpty() ) { removeItem = first.data; if ( first == last ) first = last = null; else first = first.next; } return removeItem; } 9 Cài đặt Linked List public int removeFromBack() { int removeItem = -1; if ( ! isEmpty() ) { removeItem = last.data; if ( first == last ) first = last = null; else { Node current = first; while ( current.next != last ) current = current.next; last = current; last.next =null; } } return removeItem; } 10 Cài đặt Linked List public void print() { Node node = first; while (node != null) { System.out.print(node.data + " "); node = node.next; } System.out.println("\n"); } } [...]... chương trình in ra dạng nhị phân của một số nguyên dương cho trước • Bài 2: Cài đặt phương thức search trong lớp Tree để tìm một phần tử có giá trị cho trước 30 PHẦN 2 LẬP TRÌNH TỔNG QUÁT TRONG JAVA • Giới thiệu về lập trình tổng quát • Phương thức tổng quát và nạp chồng phương thức tổng quát • Lớp và giao diện tổng quát Giới thiệu • Tổng quát hóa chương trình để có thể hoạt động với các kiểu dữ liệu. .. queue.enqueue(5); queue.enqueue(7); queue.enqueue(4); queue.enqueue(8); queue.print(); queue.dequeue(); queue.dequeue(); queue.print(); } } 21 Tree • Tree là một cấu trúc phi tuyến (non-linear) • Mỗi node trên cây có thể có nhiều liên kết tới node khác Nút gốc Nút trong Nút lá 22 Binary Search Tree • Cây nhị phân là cây mà mỗi node không có quá 2 node con • Cây tìm kiếm nhị phân là cây nhị phân mà: – Giá trị các... quát • Lớp và giao diện tổng quát Giới thiệu • Tổng quát hóa chương trình để có thể hoạt động với các kiểu dữ liệu khác nhau, kể cả các kiểu dữ liệu trong tương lai (thuật toán đã xác định) • Ví dụ, kiểu ngăn xếp – C: dùng con trỏ void – C++: dùng template – Java 1.5,1.6: Generics – C#: Generics 32 Xét các thao tác trên tập hợp We will use the class Set as the motivating example in this lecture • Set... main(String[] args) { Stack stack = new Stack(); stack.push(5); stack.push(7); stack.push(4); stack.push(8); stack.print(); stack.pop(); stack.pop(); stack.print(); } } 18 Queue • Queue (Hàng đợi) là cấu trúc theo kiểu FIFO (First In First Out), phần tử vào trước sẽ được lấy ra trước • Hai thao tác cơ bản trên hàng đợi – Chèn phần tử: Luôn chèn vào cuối hàng đợi (enqueue) – Lấy ra phần tử: Lấy ra từ... list.insertAtFront( 7 ); list.insertAtBack( 9 ); list.insertAtBack( 8 ); list.insertAtBack( 4 ); list.print(); list.removeFromFront(); list.removeFromBack(); list.print(); } } 15 Stack • Stack là một cấu trúc theo kiểu LIFO (Last In First Out), phần tử vào sau cùng sẽ được lấy ra trước • Hai thao tác cơ bản trên Stack – Chèn phần tử: Luôn chèn vào đỉnh Stack (push) – Lấy ra phần tử: Luôn lấy ra từ đỉnh . LECTURE 4 DATA STRUCTURES PHẦN 1 XÂY DỰNG MỘT SỐ CẤU TRÚC • Linked List • Stack • Queue • Tree 3 Linked List • Linked list là cấu trúc gồm các node liên kết với nhau thông qua các mối. ); list.print(); list.removeFromFront(); list.removeFromBack(); list.print(); } } 16 Stack • Stack là một cấu trúc theo kiểu LIFO (Last In First Out), phần tử vào sau cùng sẽ được lấy ra trước. • Hai thao. Stack(); stack.push(5); stack.push(7); stack.push(4); stack.push(8); stack.print(); stack.pop(); stack.pop(); stack.print(); } } 19 Queue • Queue (Hàng đợi) là cấu trúc theo kiểu FIFO (First In First Out), phần tử vào trước sẽ được lấy ra trước. • Hai thao

Ngày đăng: 27/06/2014, 02:20

Từ khóa liên quan

Mục lục

  • PowerPoint Presentation

  • Slide 2

  • Linked List

  • Slide 4

  • Slide 5

  • Cài đặt Linked List

  • Slide 7

  • Slide 8

  • Slide 9

  • Slide 10

  • Mô tả insertAtFront

  • Mô tả insertAtBack

  • Mô tả removeFromFront

  • Mô tả removeFromBack

  • Sử dụng Linked List

  • Stack

  • Cài đặt Stack

  • Sử dụng Stack

  • Queue

  • Cài đặt Queue

Tài liệu cùng người dùng

  • Đang cập nhật ...

Tài liệu liên quan