###前提
ClassLibraryを利用してQueueクラスを作っているのですが、ClassLibraryにある引数doubleのメソッドを使って、Queueクラスでstring要素のQueueを作成しないといけません。
###ListNodeクラス(ClassLibrary)
public class ListNode { public double Data { get; private set; } public ListNode Next { get; set; } public ListNode(double dataValue) : this(dataValue, null) { } public ListNode(double dataValue, ListNode nextNode) { Data = dataValue; Next = nextNode; } }
上記のように、ListNodeクラスでDataプロパティのデータタイプをdoubleで設定してあります。Dataプロパティのデータタイプは変えられないことになっております。
###Listクラス(ClassLibrary)
public class List { private ListNode firstNode; private ListNode lastNode; private string name; private int counter; public ListNode FirstNode { get { return firstNode; } set { firstNode = value; } } public List(string listName) { name = listName; firstNode = lastNode = null; counter = 0; } public List() : this("list") { } public void InsertAtFront(double insertItem) { if (IsEmpty()) { firstNode = lastNode = new ListNode(insertItem); } else { firstNode = new ListNode(insertItem, firstNode); } counter++; } public void InsertAtBack(double insertItem) { if (IsEmpty()) { firstNode = lastNode = new ListNode(insertItem); } else { lastNode = lastNode.Next = new ListNode(insertItem); } counter++; } public double RemoveFromFront() { if (IsEmpty()) { throw new EmptyListException(name); } double removeItem = firstNode.Data; // retrieve data // reset firstNode and lastNode references if (firstNode == lastNode) { firstNode = lastNode = null; } else { firstNode = firstNode.Next; } counter--; return removeItem; // return removed data } public double RemoveFromBack() { if (IsEmpty()) { throw new EmptyListException(name); } double removeItem = lastNode.Data; // retrieve data // reset firstNode and lastNode references if (firstNode == lastNode) { firstNode = lastNode = null; } else { ListNode current = firstNode; // loop while current.Next is not lastNode while (current.Next != lastNode) { current = current.Next; // move to next node } // current is new lastNode lastNode = current; current.Next = null; } counter--; return removeItem; // return removed data }
上記のようにInsertAtFront/InsertAtBackメソッドの引数も必然的にdoubleです。
このClassLibraryを用いて作ったQueueクラスの雛形が、、
class QueueInheritanceLibrary:List { public QueueInheritanceLibrary() : base("queue") { } public void Enqueue(double dataValue) { InsertAtBack(dataValue); } public double Dequeue() { return RemoveFromFront(); } }
上記のクラスなんですが、このEnqueueメソッドとDequeueメソッドに渡す値と戻り値をstringにしないといけないんですが、何か方法はありますでしょうか?
標準のQueue<T>じゃダメなんですか?
回答2件
あなたの回答
tips
プレビュー