מימוש רשימה ג'נרית ב-#C
בדומה לרשימה המקושרת הפשוטה עליה למדנו, גם רשימה ג'נרית כבר קיימת כחלק מהשפה ואנחנו לא צריכים לממש אותה.
בכל זאת, למטרות לימוד נדגים מימוש אפשרי.
using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace ConsoleApplication103 { class Node<T> // "המחלקה "צומת { private T info; private Node<T> next; public Node(T info) { this.info = info; this.next = null; } public Node(T info, Node<T> next) { this.info = info; this.next = next; } public T GetInfo() { return info; } public Node<T> GetNext() { return next; } public void SetInfo(T info) { this.info = info; } public void SetNext(Node<T> next) { this.next = next; } public override string ToString() { return info.ToString(); } } class List<T> {
private Node<T> first; public List() { first = null; } public Node<T> GetFirst() { return first; } public Node<T> Insert(Node<T> p, T x) { Node<T> temp = new Node<T>(x); if (p == null) { temp.SetNext(first); first = temp; } else { temp.SetNext(p.GetNext()); p.SetNext(temp); } return temp; } public Node<T> Remove(Node<T> p) { if (first == p) first = first.GetNext(); else { Node<T> prev = first; while (prev.GetNext() != null && prev.GetNext() != p) prev = prev.GetNext(); prev.SetNext(p.GetNext()); } Node<T> NextP = p.GetNext(); p.SetNext(null); return NextP; } public bool IsEmpty() { return first == null; } public override string ToString() { string str = "["; Node<T> p = first; while (p != null) { str = str + p.GetInfo().ToString(); if (p.GetNext() != null) str = str + " , "; else str = str + "]"; p = p.GetNext(); } return str; } } class Program { public static List<int> CreateList() { List<int> L = new List<int>(); Node<int> tail = null; int x; while (true) { Console.WriteLine("Enter info , (-1 to finish): "); x = Convert.ToInt32(Console.ReadLine()); if (x == -1) break; tail = L.Insert(tail, x); } return L; } static void Main(string[] args) { List<int> L = CreateList(); Node<int> p; p = L.GetFirst(); while (p != null) { Console.WriteLine(p.GetInfo()); p = p.GetNext(); } } } }
על שימוש נכון ברשימות המובנות של השפה תוכלו לקרוא בהרחבה בקישור הזה.
אין תגובות:
הוסף רשומת תגובה