© המרכז להוראת המדעים האוניברסיטה העברית בירושלים

Slides:



Advertisements
Similar presentations
Inserting a Node into a Specified Position of a Linked List To create a node for the new item newNode = new Node(item); To insert a node between two nodes.
Advertisements

Double linked list Lai Ah Fur. The structure of node class IntDLLNode { int info; IntDLLNode next = null, prev = null; IntDLLNode() { } IntDLLNode(int.
For(int i = 1; i
Data Structure Lecture-5
Pointer Review. Node { int value; Node * next; Node( int val =-1, Node * n = NULL) {value = val; next = n;} } Given a ordered linked list pointed to.
Insert A tree starts with the dummy node D D 200 D 7 Insert D
Lists: array implementation list_size = 5 lst Obj 1Obj 2Obj 3Obj 4Obj 5.
Singly Linked Lists - Ed. 2, 3: Chapter 4 - Ed. 4.: Chapter 3.
Chapter 101 Dynamic Data Structures and Generics Chapter 10.
Use Quartus II Design Procedure. Use Quartus II Create Project.
1 Genericity Parameterizing by Type. 2 Generic Class One that is parameterized by type  Works when feature semantics is common to a set of types On object.
For more info visit at For more info visit at
Lecture Objectives To understand how Java implements a stack To learn how to implement a stack using an underlying array or linked list Implement a simple.
APS105 Sorting. Sorting is a commonly needed function –itunes can sort your song library different ways –excel spreadsheet can sort a column of numbers.
Some of the best books of  &mid= A23D2FC75CD A23D2FC75CD7.
Operator Overloads Part2. Issue Provide member +(int) operator Rational + int OK int + Rational Error.
Programming with Visual C++ A short review of the process.
Consider the following Which of the following will cause a java.lang.ClassCastException? a)Alpha a = x; b)Foo f= (Delta)x; c)Foo f= (Alpha)x; d)Beta b.
Introduction to Web Services. Examples Using a Web Service Creating a new Web Service.
CIS3023: Programming Fundamentals for CIS Majors II Summer 2010 Ganesh Viswanathan Generics and Collections Course Lecture Slides 19 th July 2010 “Never.
Introduction to Java Primitive Types Operators Basic input and output.
APS105 Lists. Structures Arrays allow a collection of elements –All of the same type How to collect elements of different types? –Structures; in C: struct.
1 Chapter 1 C++ Templates Sections 1.6 and Templates Type-independent patterns that can work with multiple data types –Generic programming –Code.
Class and Structure. 2 Structure Declare using the keyword struct purpose is to group data Default visibility mode is public A struct doesn't have a constructor.
1 CMPSCI 187 Computer Science 187 Introduction to Introduction to Programming with Data Structures Lecture 8 Lists, Iterators, and Doubly Linked Lists.
1 Java linked list. Java linked list - definition ▪ Often in programming we are required to systematically store some type of information. A prime example.
1 Linked Lists II Doubly Linked Lists Chapter 3. 2 Objectives You will be able to: Describe, implement, and use a Doubly Linked List of integers.
Lecture Objectives  To understand how Java implements a stack  To learn how to implement a stack using an underlying array or linked list  Implement.
 Head pointer  Last node  Build a complete linked list  Node deletion  Node insertion  Helpful hints.
LINKED LIST’S EXAMPLES Salim Malakouti. Linked List? 523 Pointer Node ValuePointer.
Week 4 - Friday.  What did we talk about last time?  Continued doubly linked list implementation  Linked lists with iterators.
Java linked list.
1 Linked Lists Chapter 3. 2 Objectives You will be able to: Describe an abstract data type for lists. Understand and use an implementation of a List ADT.
Linked list: a list of items (nodes), in which the order of the nodes is determined by the address, called the link, stored in each node C++ Programming:
CPSC 233 Tutorial Xin Liu Feb 14, Tips on keyboard input How to detect that the user just hit enter when prompted for a string import java.util.Scanner;
Recursion repetition without loops. Recursion  definition solving a problem in terms of a smaller version of itself  form of a recursive solution: base.
Insert location Picture here Insert place Picture here Insert Human- Environment Picture here Insert Regions Picture here Insert movement Picture here.
CSC 243 – Java Programming, Fall, 2008 Tuesday, September 30, end of week 5, Interfaces, Derived Classes, and Abstract Classes.
C++ Programming:. Program Design Including
CSCI-255 LinkedList.
UNIT – I Linked Lists.
Generics and Subtyping
Sequences 8/2/ :16 AM Linked Lists Linked Lists.
Stacks and Queues CMSC 202.
Sequences 9/18/ :20 PM C201: Linked List.
8-1.
© המרכז להוראת המדעים האוניברסיטה העברית בירושלים
Java Generics.
Stacks and Queues.
8-1.
CSE 331 Software Design and Implementation
© המרכז להוראת המדעים האוניברסיטה העברית בירושלים
Generics (Parametric Polymorphism)
Lecture 26: Advanced List Implementation
CSE 331 Software Design and Implementation
كار همراه با آسودگي و امنيت
Reference Parameters.
Recursive Linked Lists
Can We Touch? By Deb West.
Welcome back to Software Development!
CSE 331 Software Design and Implementation
8-2.
8-2.
CS148 Introduction to Programming II
Recursive Linked Lists
List Interface ArrayList class implements the List Interface
Recursive Linked Lists
Chapter 11 Classes.
Types of Errors And Error Analysis.
Lab 03 – Linked List.
Presentation transcript:

© המרכז להוראת המדעים האוניברסיטה העברית בירושלים עצוב תוכנה מבוסס עצמים שיעור 8 © המרכז להוראת המדעים האוניברסיטה העברית בירושלים

© המרכז להוראת המדעים האוניברסיטה העברית בירושלים מה בשיעור? מימוש תור בעזרת רשימה. תרגול עם 3 רשימות. הפסקה רשימה כללית גֶנֶרית תרגול גנריות © המרכז להוראת המדעים האוניברסיטה העברית בירושלים

© המרכז להוראת המדעים האוניברסיטה העברית בירושלים מימוש תור בעזרת רשימה אפשרות א: באמצעות רשימה בלבד אפשרות ב: באמצעות רשימה והפנייה לחוליה האחרונה אפשרות ג: באמצעות הפניה לחוליה הראשונה והפניה לחוליה האחרונה בלבד. © המרכז להוראת המדעים האוניברסיטה העברית בירושלים

© המרכז להוראת המדעים האוניברסיטה העברית בירושלים תרגיל עם 3 רשימות כתוב פעולה maxValue המקבלת שתי רשימות lst1 ו-lst2 ויוצרת רשימה חדשה באופן הבא: הערך במקום ה-n-י ברשימה החדשה הוא הערך המקסימלי בין הערך ה-n-י ברשימהlst1 והערך ה-n-י ברשימה lst2. כאשר אחת הרשימות נגמרת, יתרת האיברים מהרשימה שנותרה עוברת לרשימה החדשה. © המרכז להוראת המדעים האוניברסיטה העברית בירושלים

© המרכז להוראת המדעים האוניברסיטה העברית בירושלים insert הכנסת האיבר הראשון מתבצעת באותו אופן כמו הכנסת יתר האיברים. הימנעות מפעולה מיוחדת על מנת לחסוך בדיקה מיוחדת בהתחלה. © המרכז להוראת המדעים האוניברסיטה העברית בירושלים

© המרכז להוראת המדעים האוניברסיטה העברית בירושלים רשימה כללית גֶנֶרית © המרכז להוראת המדעים האוניברסיטה העברית בירושלים

© המרכז להוראת המדעים האוניברסיטה העברית בירושלים רשימה כללית Object קיימת אפשרות שגם המחלקה List תוגדר ככללית בדיוק באותה צורה שהגדרנו את המחסנית הכללית. מאחר והרשימה ממומשת ע"י שרשרת חוליות – כל חוליה היא איבר ברשימה שמוגדרת ע"י המחלקה Node. לכן כדי שהרשימה תהיה כללית עלינו להגדיר את תכונת ה-info במחלקה Node מטיפוס Object. © המרכז להוראת המדעים האוניברסיטה העברית בירושלים

© המרכז להוראת המדעים האוניברסיטה העברית בירושלים המחלקה הכללית Node © המרכז להוראת המדעים האוניברסיטה העברית בירושלים

© המרכז להוראת המדעים האוניברסיטה העברית בירושלים המחלקה הכללית Node © המרכז להוראת המדעים האוניברסיטה העברית בירושלים

© המרכז להוראת המדעים האוניברסיטה העברית בירושלים המחלקה הכללית List © המרכז להוראת המדעים האוניברסיטה העברית בירושלים

© המרכז להוראת המדעים האוניברסיטה העברית בירושלים המחלקה הכללית List © המרכז להוראת המדעים האוניברסיטה העברית בירושלים

© המרכז להוראת המדעים האוניברסיטה העברית בירושלים המחלקה הכללית List © המרכז להוראת המדעים האוניברסיטה העברית בירושלים

© המרכז להוראת המדעים האוניברסיטה העברית בירושלים רשימה כללית - חסרונות ניתן להכניס לאותה רשימה ערכים מסוגים שונים: יש צורך בהמרה (שלא תמיד ידועה): List list = new List(); list.insert(null,3); list.insert(null,"hello world"); list.insert(null,'*'); Node pos = list.getFirst(); int x = (Integer)pos.getInfo(); © המרכז להוראת המדעים האוניברסיטה העברית בירושלים

© המרכז להוראת המדעים האוניברסיטה העברית בירושלים רשימה כללית - חסרונות הגדרה של מספר רשימות מסוגים שונים נראית זהה, דבר הגורם לבלבול וקושי בהבנת הקוד: List list1 = new List(); // הכוונה לרשימה של מספרים שלמים List list2 = new List(); // הכוונה לרשימה של מחרוזות List list3 = new List(); // הכוונה לרשימה של דליים : © המרכז להוראת המדעים האוניברסיטה העברית בירושלים

© המרכז להוראת המדעים האוניברסיטה העברית בירושלים רשימה כללית גֶנֶרית קיימת אפשרות שהמחלקה List תהיה גנרית, כלומר שאיבריה יהיו מטיפוס עצם כללי <info-type>List. בזמן יצירת עצם מסוג רשימה יש לקבוע את סוג איברי הרשימה בהחלפת ה info-type בטיפוס העצם הרצוי. List<Integer> list1= new List<Integer>(); רשימה של מספרים שלמים בלבד! list1 List<String> list2 = new List<String>(); רשימה של מחרוזות בלבד! list2 © המרכז להוראת המדעים האוניברסיטה העברית בירושלים

רשימה כללית גֶנֶרית (המשך...) ניתן להכניס לכל רשימה ערכים מסוג אחד בלבד: List<Integer> list1 = new List<Integer>(); List<String> list2 = new List<String>(); list1.insert(null,3); list1.insert(null,"hello world"); //compile-time error! list2.insert(null,"hello world"); //ok © המרכז להוראת המדעים האוניברסיטה העברית בירושלים

רשימה כללית גֶנֶרית (המשך...) מאחר והרשימה ממומשת ע"י שרשרת חוליות גם המחלקה Node צריכה להיות גנרית – התכונה info תהיה מטיפוס עצם כללי <info-type>Node. אין צורך בהמרה: Node<Integer> node = new Node<Integer>(3); node.setInfo(12); node = list1.getFirst(); int x = node.getInfo(); © המרכז להוראת המדעים האוניברסיטה העברית בירושלים

רשימה כללית גֶנֶרית (המשך...) הגדרה של מחלקה גנרית נראה כך: class Node<T> { private T info; : } © המרכז להוראת המדעים האוניברסיטה העברית בירושלים

© המרכז להוראת המדעים האוניברסיטה העברית בירושלים המחלקה הגנרית Node © המרכז להוראת המדעים האוניברסיטה העברית בירושלים

© המרכז להוראת המדעים האוניברסיטה העברית בירושלים המחלקה הגנרית Node © המרכז להוראת המדעים האוניברסיטה העברית בירושלים

© המרכז להוראת המדעים האוניברסיטה העברית בירושלים המחלקה הגנרית List © המרכז להוראת המדעים האוניברסיטה העברית בירושלים

© המרכז להוראת המדעים האוניברסיטה העברית בירושלים המחלקה הגנרית List © המרכז להוראת המדעים האוניברסיטה העברית בירושלים

© המרכז להוראת המדעים האוניברסיטה העברית בירושלים המחלקה הגנרית List © המרכז להוראת המדעים האוניברסיטה העברית בירושלים

רשימה כללית גֶנֶרית (המשך...) לסיכום: אם מחלקה מוגדרת כגנרית, אז ניתן לומר שממחלקה זו ניתן להגדיר טיפוסי עצמים חדשים נוספים כגון: List<Integer> List<String> List<Bucket> : © המרכז להוראת המדעים האוניברסיטה העברית בירושלים

דוגמאות לרשימה כללית גֶנֶרית נתונה מחלקה Book שמגדירה ספר (שם ספר, מחברים, מס' עותקים...). אוסף ספרים בספרייה יוגדר כרשימה: רשימה של מחסניות כלליות: רשימה של רשימות מסוג ספר: List<Book> library = new List<Book>(); List<Stack> list1 = new List<Stack>(); List<List<Book>> list2 = new List<List<Book>>(); © המרכז להוראת המדעים האוניברסיטה העברית בירושלים

© המרכז להוראת המדעים האוניברסיטה העברית בירושלים רשימה של מספרים שלמים מחלקת רשימה שתכונת ה-info שלה מטיפוס int: List lst1 = new List(); lst1 head info next info next info next 6 8 3 © המרכז להוראת המדעים האוניברסיטה העברית בירושלים

רשימה כללית מטיפוס Object מחלקת רשימה שתכונת ה-info שלה מטיפוס Object: List lst2 = new List(); lst1 lst2 head info next © המרכז להוראת המדעים האוניברסיטה העברית בירושלים

© המרכז להוראת המדעים האוניברסיטה העברית בירושלים רשימה גנרית מחלקת רשימה גנרית שתכונת ה-info שלה מטיפוס T: List<Bucket> lst3 = new List<Bucket>(); lst3 head info next © המרכז להוראת המדעים האוניברסיטה העברית בירושלים

© המרכז להוראת המדעים האוניברסיטה העברית בירושלים תרגול © המרכז להוראת המדעים האוניברסיטה העברית בירושלים

© המרכז להוראת המדעים האוניברסיטה העברית בירושלים © המרכז להוראת המדעים האוניברסיטה העברית בירושלים