A Logical Model for Taxonomic Concepts for Expanding Knowledge using Linked Open Data
Visual C++ Programming: Concepts and Projects Chapter 12B: Linked List (Tutorial)
-
Upload
bennett-cummings -
Category
Documents
-
view
228 -
download
1
Transcript of Visual C++ Programming: Concepts and Projects Chapter 12B: Linked List (Tutorial)
Tutorial: Linked List
• Problem description– This program helps the user visualize a linked list
by drawing one on the interface– Buttons are provided to:
• Create the initial list• Add a Node to the front of the list• Delete a Node from the front of the list• Remove all Nodes (delete the list)
2Programming with Visual C++
Design
• The Node class definition– Start with a UML class diagram– All data members and methods will have public
access (+)– Class variable: nodeCount– Instance variables: nodeData, next– Default constructor: Node()
12Programming with Visual C++
Design (continued)
• Interface sketch– Equal distance between Node rectangles– Arrows drawn to link Nodes– Starting coordinates of the first Node are crucial
• The positions of all other Nodes are calculated from them
14Programming with Visual C++
Design (continued)
• The head pointer
• The head pointer always points to the first Node in the list
• All insertions and deletions involve the head pointer
16Programming with Visual C++
Design (continued)
• Inserting a new Node– Create the new Node– Point the new Nodes next pointer at the first
Node in the list– Assign the head pointer to point to the new Node
• This always inserts the new Node at the head of the linked list
20Programming with Visual C++
Design (continued)
• Deleting a Node– Create a temporary Node pointer (temp)– Point temp at the first Node in the linked list– Assign the head pointer to point to the second
Node– Delete the Node pointed to by temp
• This always deletes the Node at the head of the linked list
25Programming with Visual C++
Design (continued)
• Use a loop to delete each node in the list• Delete from the front• Reassign head to point to the next Node• Delete Nodes until there are no more
29Programming with Visual C++
Development
• Interface– Only four buttons required
• Coding– Create Node.h (Node header file)– Create Node.cpp (implementation file)– Finish coding Form1.h (client code)
31Programming with Visual C++
Development (continued)
• The Node class contains a default constructor– Change this to a prototype– Put the default constructor code in the
implementation file (Node.cpp)
35Programming with Visual C++
Development (continued)
• Write the default constructor code in the implementation file (Node.cpp)
• Remember to include Node.h
39Programming with Visual C++
Development (continued)
• Client code (Form1.h)– Include the Node class definition file (Node.h)
40Programming with Visual C++
Development (continued)
• Client code (Form1.h)– Constants, head pointer, and Drawing objects
41Programming with Visual C++
Development (continued)
• Client code (Form1.h)– Code Form1->Load()
• Instantiate Drawing objects
42Programming with Visual C++
Development (continued)
• Client code (Form1.h)– Code the reset() method
• Properly enable all buttons• Reset class variable Node::nodeCount to 0
43Programming with Visual C++
Coding
• Write code for btnHead_Click()– Create new head pointer– Draw the linked list– Properly reset the buttons
44Programming with Visual C++
Coding (continued)
• Write the code for btnInsert_Click()– No more than seven Nodes allowed– Implement three-step insertion algorithm– Draw the linked list
45Programming with Visual C++
Coding (continued)
• Code drawNode()– drawNode() is recursive– level is used to determine when to stop
drawing Nodes– The location of each Node rectangle is calculated
by multiplying nodeDistance and level
47Programming with Visual C++
Coding (continued)
• Draw the current Node• If there is another Node linked to it (next is
not the nullptr), then draw that Node– This is a recursive process– The base case occurs when next is the nullptr
50Programming with Visual C++
Testing
• Check each button– Create a list– Insert nodes (make sure the nodeData is correct)– Try to insert more than seven (not allowed)
53Programming with Visual C++
On Your Own
• Task 1. Coding btnDelete_Click()• Task 2. Coding btnClear_Click() and deleteList()
• Task 3. Final Testing to make sure all buttons work correctly
Programming with Visual C++ 54