Answered step by step
Verified Expert Solution
Link Copied!

Question

1 Approved Answer

LinkedListLibrary using System; namespace LinkedListLibrary { // class to represent one node in a list class ListNode { public T Data { get; private set;

image text in transcribed

LinkedListLibrary using System;

namespace LinkedListLibrary { // class to represent one node in a list class ListNode { public T Data { get; private set; } public ListNode Next { get; set; } public ListNode(T dataValue) : this(dataValue, null) { } public ListNode(T dataValue, ListNode nextNode) { Data = dataValue; Next = nextNode; } } public class List { private ListNode firstNode; private ListNode lastNode; private string name; public List(string listName) { name = listName; firstNode = lastNode = null; }

public List() : this("list") { }

public void Count() { int counter = 0; ListNode currentNode = firstNode; while (currentNode != null) { counter++; currentNode = currentNode.Next; } Console.WriteLine("The number of elements in List is:" + counter + " "); }

public void Search(T insertItem) { ListNode currentNode = firstNode; string result = ""; while (currentNode != null) { if (insertItem.ToString() == currentNode.Data.ToString()) { result = string.Format("{0} has been found", currentNode.Data.ToString()); } else { result = string.Format("Cannot find {0} in the list ", insertItem); } currentNode = currentNode.Next; } Console.WriteLine(result + " "); } public void Avg() { int counter = 0; double convertNodeToDouble = 0; double temp = 0; double result = 0; ListNode currentNode = firstNode; while (currentNode != null) { counter++; double.TryParse(currentNode.Data.ToString(), out convertNodeToDouble); temp += convertNodeToDouble; result = temp / counter; currentNode = currentNode.Next; } Console.WriteLine("The average of the list is " + result + " "); }

public void InsertAtFront(T insertItem) { if (IsEmpty()) { firstNode = lastNode = new ListNode(insertItem); } else { firstNode = new ListNode(insertItem, firstNode); } }

public void InsertAtBack(T insertItem) { if (IsEmpty()) { firstNode = lastNode = new ListNode(insertItem); } else { lastNode = lastNode.Next = new ListNode(insertItem); } }

public T RemoveFromFront() { if (IsEmpty()) { throw new EmptyListException(name); }

T removeItem = firstNode.Data; if (firstNode == lastNode) { firstNode = lastNode = null; } else { firstNode = firstNode.Next; }

return removeItem; }

public T RemoveFromBack() { if (IsEmpty()) { throw new EmptyListException(name); }

T removeItem = lastNode.Data; if (firstNode == lastNode) { firstNode = lastNode = null; } else { ListNode current = firstNode;

while (current.Next != lastNode) { current = current.Next; }

lastNode = current; current.Next = null; }

return removeItem; }

public bool IsEmpty() { return firstNode == null; }

public void Display() { if (IsEmpty()) { Console.WriteLine($"Empty {name}"); } else { Console.Write($"The {name} is: ");

ListNode current = firstNode;

while (current != null) { Console.Write($"{current.Data} "); current = current.Next; }

Console.WriteLine(" "); } } } public class EmptyListException : Exception { public EmptyListException() : base("The list is empty") { }

public EmptyListException(string name) : base($"The {name} is empty") { }

public EmptyListException(string exception, Exception inner) : base(exception, inner) { } } }

LinkedListTest

// Fig. 19.5: ListTest.cs // Testing class List. using System; using LinkedListLibrary;

// class to test List class functionality class ListTest { static void Main() { var list = new List();

list.InsertAtFront(34.56); list.Display(); list.InsertAtFront(56.43); list.Display(); list.InsertAtBack(743.3321); list.Display(); list.InsertAtBack(534.21); list.Display(); list.Search(32.1); list.Count(); list.Avg();

// remove data from list and display after each removal try { object removedObject = list.RemoveFromFront(); Console.WriteLine($"{removedObject} removed"); list.Display();

removedObject = list.RemoveFromFront(); Console.WriteLine($"{removedObject} removed"); list.Display();

removedObject = list.RemoveFromBack(); Console.WriteLine($"{removedObject} removed"); list.Display();

removedObject = list.RemoveFromBack(); Console.WriteLine($"{removedObject} removed"); list.Display(); } catch (EmptyListException emptyListException) { Console.Error.WriteLine($" {emptyListException}"); } } }

In the Lab Assignment 02, you have built generic LinkedListLibrary (a.dll file) and then tested it in the LinkedListTest. You need to extend that LinkedListlibrary by adding the following methods in the LinkedListTest project. a) GetFirst() it returns the first element of the LinkedList. b) Getlast() - > it returns the last element of the LinkedList Also add validation here such if linked list is empty, then return null etc

Step by Step Solution

There are 3 Steps involved in it

Step: 1

blur-text-image

Get Instant Access to Expert-Tailored Solutions

See step-by-step solutions with expert insights and AI powered tools for academic success

Step: 2

blur-text-image

Step: 3

blur-text-image

Ace Your Homework with AI

Get the answers you need in no time with our AI-driven, step-by-step assistance

Get Started

Recommended Textbook for

Fundamentals Of Database Systems

Authors: Ramez Elmasri, Sham Navathe

4th Edition

0321122267, 978-0321122261

More Books

Students also viewed these Databases questions

Question

Explain the distinction(s) between agency funds and trust funds.

Answered: 1 week ago

Question

The amount of work I am asked to do is reasonable.

Answered: 1 week ago

Question

The company encourages a balance between work and personal life.

Answered: 1 week ago