Create a data type using a doubly-linked circular structure

Assignment Help Computer Engineering
Reference no: EM131984795

Assignment

In this lab, using C++, you will create an abstract data type, using a doubly-linked circular structure to store the values and links. You must create it by your own and not use any existing containers.

You will need a QueueNode. You can use a struct for this, as each node will not have any associated functions. It will have members for data, and the next and previous pointers.

Data will be positive integers. There will be no NULL pointers. Every NEXT pointer will point to a QueueNode as will every PREV pointer.

You will create a new node when the queue is full. As you take the data out, you will NOT remove the node. Use a sentinel value of -1 to indicate a node is empty.

You will create a Queue class. It will have the data and function members described below. The queue is a first in first out structure. You add to the back and can only look at or take off the front. You will use a circularly linked structure to implement this queue. In your class you will only have the QueueNode pointers to the front and to the back:

QueueNode *front // first item in the queue, where you take the item off
QueueNode *back // last item in the queue, where you add a new item to

You will implement these functions with appropriate parameters and return types in your Queue class:

addBack() // puts on item at the end of the queue or
// if the queue is full, creates a new node to store the item
getFront() // returns the value at the front of the queue
removeFront() // removes the first item in the structure

The removeFront() function only replaces the value in the front node by inserting the sentinel (-1). The getFront() and removeFront() functions will return a -1 if the queue is empty when the function is called. Include appropriate constructors and destructors. You will NOT have a data member (or variable) for size.

Remember that this list is circular. So you can only identify the head and tail of the list by the front and back pointers. When you remove the front node, you will not delete the node itself, but replace the value stored in the node with -1 (so this node is empty now), and move the front pointer pointing to the next node in the list, which is the new head of the list. How do you determine whether the list is full? When you try to add to the back of the list, if the node next to the node the back pointer pointing to is not stored with value "-1", then the list is full. You need to create a new node and add that to the back of the list.

HINT: You should sit down and design the whole program before touching a keyboard. For the queue, sit down with a pencil and a piece of paper and study the required pointer manipulations. Figure out how you will test if the queue is full or empty by just using the front and back pointers. After you complete the design, you should develop your code first using pseudocode. Then convert it to C++.

Testing program

You must also write a driver program that uses your queue to demonstrate it works correctly.
You will prompt the user with a menu. The options should be:
"a. Enter a value to be added to the queue",
"b. Display first node (front) value",
"c. Remove first node (front) value",
"d. Display the queue contents",
"x. Exit"

For example, after you display the menu, the user enters "a". Your program then reads the integer and put it in the back of the list. You can have the user type "a 7", or you have "a <newline> 7". Also validate the user inputs. You will return an error message if the user attempts to read or remove a value from an empty queue.

Reference no: EM131984795

Questions Cloud

How much should the annual payments be : The discount rate is 16%. As an alternative, she can receive $10,000 today. Which should she choose?
The percentage change in long maturity bond price : The percentage change in the long maturity bond's price minus the percentage change in the short maturity bond's price is ________%.
How much will you have saved at the end of five years : Suppose that you earned a bachelor's degree and now you're teaching high school. Find the interest. How much will you have saved at the end of five years?
Analyze the shens expected constant growth rate : Shen Computer's stock sells for $30.00 per share, the expected dividend for the coming year is D1 = $1.20, and investors expect to realize.
Create a data type using a doubly-linked circular structure : In this lab, using C++, you will create an abstract data type, using a doubly-linked circular structure to store the values and links.
Demonstrate an argument is valid : Describe what needs to happen in a truth table to demonstrate an argument is valid?
How much money do you have if you hold bond to? maturity : If you can reinvest coupons at a rate of 1?% per? annum, then how much money do you have if you hold the bond to? maturity?
What is the total cost of interest over the life of mortgage : Sharon Fox decided to buy a home in Marblehead, Massachusetts, for $287,000. Her bank requires a 30% down payment.
What should the price be worth after three years : What should the price be worh after 3 years.

Reviews

Write a Review

Computer Engineering Questions & Answers

  Mathematics in computing

Binary search tree, and postorder and preorder traversal Determine the shortest path in Graph

  Ict governance

ICT is defined as the term of Information and communication technologies, it is diverse set of technical tools and resources used by the government agencies to communicate and produce, circulate, store, and manage all information.

  Implementation of memory management

Assignment covers the following eight topics and explore the implementation of memory management, processes and threads.

  Realize business and organizational data storage

Realize business and organizational data storage and fast access times are much more important than they have ever been. Compare and contrast magnetic tapes, magnetic disks, optical discs

  What is the protocol overhead

What are the advantages of using a compiled language over an interpreted one? Under what circumstances would you select to use an interpreted language?

  Implementation of memory management

Paper describes about memory management. How memory is used in executing programs and its critical support for applications.

  Define open and closed loop control systems

Define open and closed loop cotrol systems.Explain difference between time varying and time invariant control system wth suitable example.

  Prepare a proposal to deploy windows server

Prepare a proposal to deploy Windows Server onto an existing network based on the provided scenario.

  Security policy document project

Analyze security requirements and develop a security policy

  Write a procedure that produces independent stack objects

Write a procedure (make-stack) that produces independent stack objects, using a message-passing style, e.g.

  Define a suitable functional unit

Define a suitable functional unit for a comparative study between two different types of paint.

  Calculate yield to maturity and bond prices

Calculate yield to maturity (YTM) and bond prices

Free Assignment Quote

Assured A++ Grade

Get guaranteed satisfaction & time on delivery in every assignment order you paid with us! We ensure premium quality solution document along with free turntin report!

All rights reserved! Copyrights ©2019-2020 ExpertsMind IT Educational Pvt Ltd