Data Structures, Lists, and Trees CS-2301 B-term 20081 Data Structures — Lists and Trees CS-2301, System Programming for Non-majors (Slides include materials.

Slides:



Advertisements
Similar presentations
Linked Lists in C and C++ CS-2303, C-Term Linked Lists in C and C++ CS-2303 System Programming Concepts (Slides include materials from The C Programming.
Advertisements

Hash Tables and Constant Access Time CS-2303, C-Term Hash Tables and Constant Access Time CS-2303 System Programming Concepts (Slides include materials.
Introduction to Linked Lists In your previous programming course, you saw how data is organized and processed sequentially using an array. You probably.
Chapter 6 Structures By C. Shing ITEC Dept Radford University.
Chapter 17 Linked List Saurav Karmakar Spring 2007.
1 abstract containers hierarchical (1 to many) graph (many to many) first ith last sequence/linear (1 to 1) set.
Searching Kruse and Ryba Ch and 9.6. Problem: Search We are given a list of records. Each record has an associated key. Give efficient algorithm.
Binary TreesCS-2303, C-Term Binary Trees (and Big “O” notation) CS-2303 System Programming Concepts (Slides include materials from The C Programming.
Linked Lists in C and C++ CS-2303, C-Term Linked Lists in C and C++ CS-2303 System Programming Concepts (Slides include materials from The C Programming.
More on Dynamic Memory Allocation Seokhee Jeon Department of Computer Engineering Kyung Hee University 1 Illustrations, examples, and text in the lecture.
Linked Lists in C and C++ By Ravi Prakash PGT(CS).
Lists and TreesCS-2301 D-term Data Structures — Lists and Trees CS-2301 System Programming D-term 2009 (Slides include materials from The C Programming.
Lists and Trees (continued) CS-2301, B-Term Lists and Trees (continued) CS-2301, System Programming for Non-Majors (Slides include materials from.
More on Data Structures in C CS-2301 B-term More on Lists and Trees Introduction to Hash Tables CS-2301, System Programming for Non-majors (Slides.
Review of Exam #2CS-2301, B-Term Review of Exam #2 CS-2301, System Programming for Non-Majors (Slides include materials from The C Programming Language,
CS102 – Data Structures Lists, Stacks, Queues, Trees, Hash Collections Framework David Davenport Spring 2002.
CS 104 Introduction to Computer Science and Graphics Problems Data Structure & Algorithms (4) Data Structures 11/18/2008 Yang Song.
Hash TablesCS-2301, B-Term Hash Tables and Constant Access Time CS-2301, System Programming for Non-Majors (Slides include materials from The C Programming.
Data Structures Data Structures Topic #8. Today’s Agenda Continue Discussing Table Abstractions But, this time, let’s talk about them in terms of new.
More on Data Structures in C CS-2301 D-term More on Data Structures in C CS-2301 System Programming D-term 2009 (Slides include materials from The.
Chapter 12 C Data Structures Acknowledgment The notes are adapted from those provided by Deitel & Associates, Inc. and Pearson Education Inc.
© Copyright 1992–2004 by Deitel & Associates, Inc. and Pearson Education Inc. All Rights Reserved. Chapter 12 – Data Structures Outline 12.1Introduction.
1 abstract containers hierarchical (1 to many) graph (many to many) first ith last sequence/linear (1 to 1) set.
More about Numerical Computation CS-2301, B-Term More about Numerical Computation CS-2301, System Programming for Non-Majors (Slides include materials.
Chapter 3: Arrays, Linked Lists, and Recursion
Trees Main and Savitch Chapter 10. Binary Trees A binary tree has nodes, similar to nodes in a linked list structure. Data of one sort or another may.
Data Structures — Lists and Trees CS-2301, B-Term Data Structures — Lists and Trees CS-2301, System Programming for Non-Majors (Slides include materials.
Comp 249 Programming Methodology Chapter 15 Linked Data Structure - Part B Dr. Aiman Hanna Department of Computer Science & Software Engineering Concordia.
Chapter 12 Data Structure Associate Prof. Yuh-Shyan Chen Dept. of Computer Science and Information Engineering National Chung-Cheng University.
1 Data Structures Lists and Trees. 2 Real-Life Computational Problems All about organizing data! –What shape the data should have to solve your problem.
CMPSC 16 Problem Solving with Computers I Spring 2014 Instructor: Lucas Bang Lecture 15: Linked data structures.
Lists ADT (brief intro):  Abstract Data Type  A DESCRIPTION of a data type  The data type can be anything: lists, sets, trees, stacks, etc.  What.
 2007 Pearson Education, Inc. All rights reserved C Data Structures.
Introduction to Data Structures Fall 2008 Dr. David A. Gaitros
ECE 103 Engineering Programming Chapter 61 Abstract Data Types Herbert G. Mayer, PSU CS Status 6/4/2014 Initial content copied verbatim from ECE 103 material.
Searching: Binary Trees and Hash Tables CHAPTER 12 6/4/15 Nyhoff, ADTs, Data Structures and Problem Solving with C++, Second Edition, © 2005 Pearson Education,
BINARY SEARCH TREE. Binary Trees A binary tree is a tree in which no node can have more than two children. In this case we can keep direct links to the.
Chapter 6 Binary Trees. 6.1 Trees, Binary Trees, and Binary Search Trees Linked lists usually are more flexible than arrays, but it is difficult to use.
TECH Computer Science Dynamic Sets and Searching Analysis Technique  Amortized Analysis // average cost of each operation in the worst case Dynamic Sets.
Data Structures Week 8 Further Data Structures The story so far  Saw some fundamental operations as well as advanced operations on arrays, stacks, and.
Data Structures Using C++ 2E Chapter 9 Searching and Hashing Algorithms.
School of Engineering and Computer Science Victoria University of Wellington Copyright: Xiaoying Gao, Peter Andreae, VUW B Trees and B+ Trees COMP 261.
Data Structures: Advanced Damian Gordon. Advanced Data Structure We’ll look at: – Linked Lists – Trees – Stacks – Queues.
Slide 1 Linked Data Structures. Slide 2 Learning Objectives  Nodes and Linked Lists  Creating, searching  Linked List Applications  Stacks, queues.
Copyright © 2002 Pearson Education, Inc. Slide 1.
Data Structures Chapter 6. Data Structure A data structure is a representation of data and the operations allowed on that data. Examples: 1.Array 2.Record.
Week 10 - Friday.  What did we talk about last time?  Graph representations  Adjacency matrix  Adjacency lists  Depth first search.
Week 15 – Wednesday.  What did we talk about last time?  Review up to Exam 1.
Linked Lists. Introduction In linked list each item is embedded in a link Each item has two parts – Data – Pointer to the next item in the list Insert,
Amortized Analysis and Heaps Intro David Kauchak cs302 Spring 2013.
8/3/2007CMSC 341 BTrees1 CMSC 341 B- Trees D. Frey with apologies to Tom Anastasio.
Data Structures and Algorithm Analysis Dr. Ken Cosh Linked Lists.
Data Structure and Algorithm: CIT231 Lecture 6: Linked Lists DeSiaMorewww.desiamore.com/ifm1.
DATA STRUCURES II CSC QUIZ 1. What is Data Structure ? 2. Mention the classifications of data structure giving example of each. 3. Briefly explain.
COMP261 Lecture 23 B Trees.
Data Structure By Amee Trivedi.
Chapter 12 – Data Structures
12 C Data Structures.
Hashing Exercises.
Tree data structure.
Chapter 20: Binary Trees.
Bit Vector Linked List (Sorted and Unsorted) Hash Table Search Trees
Introduction to Linked Lists
Chapter 21: Binary Trees.
Programming Assignment #4 Binary Trees in C++
Tree data structure.
Linked Lists in C and C++
Binary Trees (and Big “O” notation)
CS202 - Fundamental Structures of Computer Science II
B-Trees.
Presentation transcript:

Data Structures, Lists, and Trees CS-2301 B-term Data Structures — Lists and Trees CS-2301, System Programming for Non-majors (Slides include materials from The C Programming Language, 2 nd ed., by Kernighan and Ritchie and from C: How to Program, 5 th ed., by Deitel and Deitel)

Data Structures, Lists, and Trees CS-2301 B-term Reading Assignment Chapter 6 of Kernighan and Ritchie AGAIN!

Data Structures, Lists, and Trees CS-2301 B-term Real-Life Computational Problems All about organizing data! –What shape the data should have to solve your problem –Where the data should flow so it is available when you need it –How your data can accommodate change and evolution of … … your own program … the requirements of your application

Data Structures, Lists, and Trees CS-2301 B-term Support from Programming Languages E.g., Java knows about all kinds of Lists, trees, arrays, collections You tell it what you want and it does the rest E.g., Scheme is entirely built on lists Anything a list can do is easy! Anything a list cannot do is hard! E.g., Matlab is about matrices and vectors Extensive support for linear and non-linear algebras

Data Structures, Lists, and Trees CS-2301 B-term In the case of C You are on your own! Only built-in tools –Arrays –structs, and –Functions Everything must be done “long-hand”

Data Structures, Lists, and Trees CS-2301 B-term Theoretically Every computational problem can be solved with loops, arrays, and non-recursive functions. In reality, most real-life problems are too hard to solve this way

Data Structures, Lists, and Trees CS-2301 B-term Common Data Structures for Real-Life Problems Linked lists One-way Doubly-linked Circular Trees Binary Multiple branches Hash Tables Combine arrays and linked list Especially for searching for objects by value

Data Structures, Lists, and Trees CS-2301 B-term Linked List struct listItem { type payload; listItem *next; }; payload next payload next payload next payload next

Data Structures, Lists, and Trees CS-2301 B-term Linked List (continued) Items of list are usually same type Generally obtained from malloc() “Payload” of item may be any type Multiple members of the struct Including char * Each item points to next item Last item points to null Need “ head ” to point to first item!

Data Structures, Lists, and Trees CS-2301 B-term Linked List (continued) struct listItem { type payload; listItem *next; }; struct listItem *head; payload next payload next payload next payload next

Data Structures, Lists, and Trees CS-2301 B-term Questions? We will look at operations on trees shortly

Data Structures, Lists, and Trees CS-2301 B-term Binary Tree A linked list but with two links per item struct treeItem { type payload; treeItem *left; treeItem *right; }; leftright payload leftright payload leftright payload leftright payload leftright payload leftright payload leftright payload

Data Structures, Lists, and Trees CS-2301 B-term Binary Tree (continued) Binary tree needs a root struct treeItem { type payload; treeItem *left; treeItem *right; }; struct treeItem *root; Binary trees often drawn with root at top! Unlike ordinary trees in the forest More like the root systems of a tree

Data Structures, Lists, and Trees CS-2301 B-term Binary Tree struct treeItem { type payload; treeItem *left; treeItem *right; }; struct treeItem *root; leftright payload leftright payload leftright payload leftright payload leftright payload leftright payload leftright payload

Data Structures, Lists, and Trees CS-2301 B-term Purpose of a Tree (Potentially) a very large data structure Capable of storing very many items Need to find items by value I.e., need to search through the data structure to see if it contains an item with the value we want Need to add new items If value is not already in the tree, add a new item … …so that it can be easily found in future Why not use a linked list?

Data Structures, Lists, and Trees CS-2301 B-term Binary Tree Example – Homework #5 Payload:– char *word — the word at that node int count — number of occurrences Possibly other data When we are pointing to any node in the tree and have a word w, either:– w is the same word as at that node, so just increase its count, w is alphabetically before the word at that node, so look for it in the left subtree, w is alphabetically after the word at that node, so look for it in the right subtree, or The node is empty (i.e., null), so create one for that word.

Data Structures, Lists, and Trees CS-2301 B-term Binary Tree I.e., look down a sequence of branches until either –We find the word –We find a null branch and add an item for our word leftright payload leftright payload leftright payload leftright payload leftright payload leftright payload leftright payload

Data Structures, Lists, and Trees CS-2301 B-term Binary Tree Example (continued) Adding an Item to the Tree treeItem *addItem(treeItem *p, char *w) { if (p == NULL){ p = malloc(sizeof(treeItem)); // fill in payload with w, count = 1 return p; }; int c = strcmp(w, p->word); if (c == 0) p->count++; else if (c left = addItem(p->left, w); else p->right = addItem(p->right, w); return p; }

Data Structures, Lists, and Trees CS-2301 B-term Binary Tree Question:– how many calls to addItem for a tree with 10 6 nodes? –Assume balanced –I.e., approx same number of nodes on each subtree leftright payload leftright payload leftright payload leftright payload leftright payload leftright payload leftright payload

Data Structures, Lists, and Trees CS-2301 B-term Binary Tree Question:– how many calls to addItem for a tree with 10 6 nodes? –Assume balanced –I.e., approx same number of nodes on each subtree leftright payload leftright payload leftright payload leftright payload leftright payload leftright payload leftright payload

Data Structures, Lists, and Trees CS-2301 B-term Observation Problems like this occur in real life all the time Need to maintain a lot of data Usually random Need to search through it quickly Need to add (or delete) items dynamically Need to sort “on the fly” I.e., as you are adding and/or deleting items

Data Structures, Lists, and Trees CS-2301 B-term Questions?

Data Structures, Lists, and Trees CS-2301 B-term Linked Lists (again) Not massive amounts of data Linear search is okay Sorting not necessary (or possible) Need to add and delete data “on the fly” Even from middle of list Items often need to be added to or deleted from the “ends”

Data Structures, Lists, and Trees CS-2301 B-term Linked List (continued) struct listItem { type payload; listItem *next; }; struct listItem *head; payload next payload next payload next payload next

Data Structures, Lists, and Trees CS-2301 B-term Adding an Item to a List struct listItem *p; Add an item after item pointed to by p ( p != NULL ) payload next payload next payload next payload next payload next

Data Structures, Lists, and Trees CS-2301 B-term Adding an Item to a List listItem *addAfter(listItem *p, listItem *q){ q -> next = p -> next; p -> next = q; } payload next payload next payload next payload next payload next

Data Structures, Lists, and Trees CS-2301 B-term Adding an Item to a List listItem *addAfter(listItem *p, listItem *q){ q -> next = p -> next; p -> next = q; } payload next payload next payload next payload next payload next

Data Structures, Lists, and Trees CS-2301 B-term Adding an Item to a List listItem *addAfter(listItem *p, listItem *q){ q -> next = p -> next; p -> next = q; } payload next payload next payload next payload next payload next

Data Structures, Lists, and Trees CS-2301 B-term What about Adding an Item before another Item? struct listItem *p; Add an item before item pointed to by p ( p != NULL ) payload next payload next payload next payload next payload next

Data Structures, Lists, and Trees CS-2301 B-term What about Adding an Item before another Item? Answer:– –Need to search list to find previous item –Add new item after previous item

Data Structures, Lists, and Trees CS-2301 B-term Doubly-Linked List struct listItem { type payload; listItem *prev; listItem *next; }; struct listItem *head, *tail; prevnext payload prevnext payload prevnext payload prevnext payload

Data Structures, Lists, and Trees CS-2301 B-term Other Kinds of List Structures Queue — FIFO (First In, First Out) Items added at end Items removed from beginning Stack — LIFO (Last In, First Out) Items added at end, removed from end Circular list Last item points to first item Head may point to first or last item Items added to end, removed from beginning

Data Structures, Lists, and Trees CS-2301 B-term Questions?

Data Structures, Lists, and Trees CS-2301 B-term Answer Approximately 20 calls to addItem Note:– –2 10 = 1024  10 3 –Therefore 10 6  2 20 –Therefore it takes approximately 20 two-way branches to cover 10 6 items! How many comparisons would it take to search a linked list of 10 6 items?

Data Structures, Lists, and Trees CS-2301 B-term Binary Trees (continued) Binary tree does not need to be “balanced” i.e., with approximate same # of nodes hanging from right or left However, it often helps with performance Multiply-branched trees Like binary trees, but with more than two links per node

Data Structures, Lists, and Trees CS-2301 B-term Binary Trees (continued) Binary tree does not need to be “balanced” i.e., with approximate same # of nodes hanging from right or left However, it helps with performance Time to reach a leaf node is O(log 2 n), where n is number of nodes in tree Multiply-branched trees Like binary trees, but with more than two links per node “Big-O” notation:– means “order of”