// Naomi Jones
// Survey, Summer 2025
// July 6, 2025
// Assignment 6 - 5 C# Linked List
using System;
using System.Collections .Generic ;
public class AdvancedLinkedList {
// OperaItem class to hold opera names and comments.
public class OperaItem
{
// Private fields to store values.
private string _name;
private string _comment;
// Constructor to initialize opera items.
public OperaItem ( string name, string comment)
{
_name = name;
_comment = comment;
}
// Properties for opera names and comments.
public string Name
{
get { return _name; }
set { _name = value; }
}
public string Comment
{
get { return _comment; }
set { _comment = value; }
}
} // class OperaItem
public static void Main( ) {
// Create a new LinkedList object.
LinkedList< OperaItem> operaList = new LinkedList< OperaItem> ( ) ;
// Create OperaItem objects to add to the linked list.
OperaItem i1 = new OperaItem ( "Aida" , "My spouse's favorite opera of all time!" ) ;
OperaItem i2 = new OperaItem ( "Don Giovanni" , "Best opera of all time!!!" ) ;
OperaItem i3 = new OperaItem ( "Un Ballo in Maschera" , "Second best opera of all time!" ) ;
OperaItem i4 = new OperaItem ( "Der fliegende Holländer" , "It's not bad." ) ;
OperaItem i5 = new OperaItem ( "Gotterdammerung" , "Great music...if you're still awake!" ) ;
OperaItem i6 = new OperaItem ( "Turandot" , "Unfinished by composer. It's okay." ) ;
// Add items to the linked list by preference.
operaList.AddFirst ( i1) ;
operaList.AddFirst ( i2) ;
operaList.AddBefore ( operaList.Find ( i1) , i3) ;
operaList.AddAfter ( operaList.Find ( i1) , i4) ;
operaList.AddLast ( i5) ;
operaList.AddLast ( i6) ;
Console.WriteLine ( "\n My personal ranking of operas:\n " ) ;
// Display all items.
foreach ( OperaItem opera in operaList)
{
Console.WriteLine ( opera.Name + " : " + opera.Comment ) ;
}
} // Main
} // AdvancedLinkedList
Ly8gTmFvbWkgSm9uZXMKLy8gU3VydmV5LCBTdW1tZXIgMjAyNQovLyBKdWx5IDYsIDIwMjUKLy8gQXNzaWdubWVudCA2IC0gNSBDIyBMaW5rZWQgTGlzdAoKdXNpbmcgU3lzdGVtOwogIHVzaW5nIFN5c3RlbS5Db2xsZWN0aW9ucy5HZW5lcmljOwoKICBwdWJsaWMgY2xhc3MgQWR2YW5jZWRMaW5rZWRMaXN0ICB7CgogICAgICAgLy8gT3BlcmFJdGVtIGNsYXNzIHRvIGhvbGQgb3BlcmEgbmFtZXMgYW5kIGNvbW1lbnRzLgogICAgICAgcHVibGljIGNsYXNzIE9wZXJhSXRlbQogICAgICAgewogICAgICAgICAgICAvLyBQcml2YXRlIGZpZWxkcyB0byBzdG9yZSB2YWx1ZXMuCiAgICAgICAgICAgIHByaXZhdGUgc3RyaW5nIF9uYW1lOwogICAgICAgICAgICBwcml2YXRlIHN0cmluZyBfY29tbWVudDsKCiAgICAgICAgICAgIC8vIENvbnN0cnVjdG9yIHRvIGluaXRpYWxpemUgb3BlcmEgaXRlbXMuCiAgICAgICAgICAgIHB1YmxpYyBPcGVyYUl0ZW0gKHN0cmluZyBuYW1lLCBzdHJpbmcgY29tbWVudCkKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICBfbmFtZSA9IG5hbWU7CiAgICAgICAgICAgICAgICAgIF9jb21tZW50ID0gY29tbWVudDsKICAgICAgICAgICAgfQoKICAgICAgICAgICAvLyBQcm9wZXJ0aWVzIGZvciBvcGVyYSBuYW1lcyBhbmQgY29tbWVudHMuCiAgICAgICAgICAgcHVibGljIHN0cmluZyBOYW1lCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgIGdldCB7cmV0dXJuIF9uYW1lO30KICAgICAgICAgICAgICAgICAgICAgIHNldCB7X25hbWUgPSB2YWx1ZTt9CiAgICAgICAgICAgICB9CgogICAgICAgICAgIHB1YmxpYyBzdHJpbmcgQ29tbWVudAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICBnZXQge3JldHVybiBfY29tbWVudDt9CiAgICAgICAgICAgICAgICAgICAgICBzZXQge19jb21tZW50ID0gdmFsdWU7fQogICAgICAgICAgICB9CiAgICAgICB9IC8vIGNsYXNzIE9wZXJhSXRlbQoKICAgICAKICAgICAgcHVibGljIHN0YXRpYyB2b2lkIE1haW4oKSAgewoKICAgICAgLy8gQ3JlYXRlIGEgbmV3IExpbmtlZExpc3Qgb2JqZWN0LgogICAgICAgTGlua2VkTGlzdDxPcGVyYUl0ZW0+IG9wZXJhTGlzdCA9IG5ldyBMaW5rZWRMaXN0PE9wZXJhSXRlbT4oICk7CgogICAgICAvLyBDcmVhdGUgT3BlcmFJdGVtIG9iamVjdHMgdG8gYWRkIHRvIHRoZSBsaW5rZWQgbGlzdC4KICAgICAgIE9wZXJhSXRlbSBpMSA9IG5ldyBPcGVyYUl0ZW0gKCJBaWRhIiwgIk15IHNwb3VzZSdzIGZhdm9yaXRlIG9wZXJhIG9mIGFsbCB0aW1lISIpOwogICAgICAgT3BlcmFJdGVtIGkyID0gbmV3IE9wZXJhSXRlbSAoIkRvbiBHaW92YW5uaSIsICJCZXN0IG9wZXJhIG9mIGFsbCB0aW1lISEhIik7CiAgICAgICBPcGVyYUl0ZW0gaTMgPSBuZXcgT3BlcmFJdGVtICgiVW4gQmFsbG8gaW4gTWFzY2hlcmEiLCAiU2Vjb25kIGJlc3Qgb3BlcmEgb2YgYWxsIHRpbWUhIik7CiAgICAgICBPcGVyYUl0ZW0gaTQgPSBuZXcgT3BlcmFJdGVtICgiRGVyIGZsaWVnZW5kZSBIb2xsw6RuZGVyIiwgIkl0J3Mgbm90IGJhZC4iKTsKICAgICAgIE9wZXJhSXRlbSBpNSA9IG5ldyBPcGVyYUl0ZW0gKCJHb3R0ZXJkYW1tZXJ1bmciLCAiR3JlYXQgbXVzaWMuLi5pZiB5b3UncmUgc3RpbGwgYXdha2UhIik7CiAgICAgICBPcGVyYUl0ZW0gaTYgPSBuZXcgT3BlcmFJdGVtICgiVHVyYW5kb3QiLCAiVW5maW5pc2hlZCBieSBjb21wb3Nlci4gSXQncyBva2F5LiIpOwoKICAgICAgIC8vIEFkZCBpdGVtcyB0byB0aGUgbGlua2VkIGxpc3QgYnkgcHJlZmVyZW5jZS4KICAgICAgIG9wZXJhTGlzdC5BZGRGaXJzdCAoaTEpOwogICAgICAgb3BlcmFMaXN0LkFkZEZpcnN0IChpMik7CiAgICAgICBvcGVyYUxpc3QuQWRkQmVmb3JlIChvcGVyYUxpc3QuRmluZCAoaTEpLCBpMyk7CiAgICAgICBvcGVyYUxpc3QuQWRkQWZ0ZXIgKG9wZXJhTGlzdC5GaW5kIChpMSksIGk0KTsKICAgICAgIG9wZXJhTGlzdC5BZGRMYXN0IChpNSk7CiAgICAgICBvcGVyYUxpc3QuQWRkTGFzdCAoaTYpOwoKICAgICAgIENvbnNvbGUuV3JpdGVMaW5lICgiXG5NeSBwZXJzb25hbCByYW5raW5nIG9mIG9wZXJhczpcbiIpOwoKICAgICAgLy8gRGlzcGxheSBhbGwgaXRlbXMuCiAgICAgICBmb3JlYWNoIChPcGVyYUl0ZW0gb3BlcmEgaW4gb3BlcmFMaXN0KQogICAgICAgewogICAgICAgICAgICAgIENvbnNvbGUuV3JpdGVMaW5lIChvcGVyYS5OYW1lICsgIiA6ICIgKyBvcGVyYS5Db21tZW50KTsKICAgICAgIH0KCiAgICAgIH0gLy8gTWFpbgoKfSAgLy8gQWR2YW5jZWRMaW5rZWRMaXN0