יום חמישי, 25 בינואר 2018

ייצוג "תור" ב-#C

ייצוג פשוט של "תור" (עליו למדנו במבנה נתונים) בשפת #C.

הקוד פשוט מאוד להבנה:



using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
 
namespace LearnQueue
{
    // תור = הראשון שנכנס הוא הראשון שיוצא
 
 
 
 
    // ייצוג צומת אחת בתור
    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 Queue<T>
    {
        private Node<T> first, last;
 
        // פונקציה בונה
        public Queue()
        {
            first = last = null;
        }
 
        public void Insert(T evarInfo)
        {
            if (last == null)
            {
                last = new Node<T>(evarInfo, null);
                first = last;
            }
            else
            {
                Node<T> tmp = new Node<T>(evarInfo, null);
                last.SetNext(tmp);
                last = tmp;
            }
        }
 
 
        // הסרה של האיבר הכי ישן שהוכנס והחזרת המידע שהיה בו
        public T Remove()
        {
            T evarInfo = first.GetInfo();
            first = first.GetNext();
            return evarInfo;
        }
 
        // החזרת האיבר הישן ביותר בתור
        public T Head()
        {
            return first.GetInfo();
        }
 
        public bool IsEmpty()
        {
            return first == null && last == null;
        }
        public override string ToString()
        {
            string str = "[ ";
            for (Node<T> temp = first; temp != null; temp = temp.GetNext())
                str += temp.GetInfo() + " ";
            str += "]";
            return str;
        }
    }
 
 
    class Program
    {
        public static Queue<string> GetNames()
        {
            Queue<string> Q = new Queue<string>();
            string name;
            while (true)
            {
                Console.WriteLine("Enter name: ");
                name = Console.ReadLine();
                if (name == "Stop")
                    break;
                Q.Insert(name);
            }
            return Q;
        }
 
        static void Main(string[] args)
        {
            Queue<int> Q = new Queue<int>();
            Q.Insert(10);
            Q.Insert(30);
            Q.Insert(20);
            Console.WriteLine(Q.Remove());
            Q.Insert(55);
            Console.WriteLine(Q.ToString());
 
            Queue<string> Q1 = GetNames();
            Console.WriteLine(Q1);
        }
    }
}





בהצלחה.

אין תגובות:

הוסף רשומת תגובה