public void AppendAtStart(Student s)
 {
     Node temp = new Node(s, null, null);
     if (start == null)
     {
         start = temp;
         end = temp;
     }
     else
     {
         temp.next = start;
         start.prev = temp;
         start = temp;
     }
     size++;
 }
 public void AppendAtEnd(Student s)
 {
     Node temp = new Node(s, null, null);
     if (start == null)
     {
         start = temp;
         end = temp;
     }
     else
     {
         temp.prev = end;
         end.next = temp;
         end = temp;
     }
     size++;
 }
예제 #3
0
        static void Main(string[] args)
        {
            DoubleLinkedList list = new DoubleLinkedList();
            Node tmpNode = new Node();

            Console.WriteLine("Print empty list");
            list.PrintLinkedList();

            Console.WriteLine("Append a single student at start");
            Student ibr = new Student(123, "Ibrahim", "Chen");
            list.AppendAtStart(ibr);
            list.PrintLinkedList();

            Console.WriteLine("Append a second student at start");
            Student chris = new Student(55, "Costic", "Sekmen");
            list.AppendAtStart(chris);
            list.PrintLinkedList();

            Console.WriteLine("Append a third student at end");
            Student bob = new Student(199, "Smith", "Al Nasr");
            list.AppendAtEnd(bob);
            list.PrintLinkedList();

            Console.WriteLine("Insert a student after TNumber = 55");
            Student Jorge = new Student(201, "Lorenzo", "Rogers");
            list.Insert(Jorge, 55);
            list.PrintLinkedList();

            Student tmpStudent = list.Max();
            Console.WriteLine("Student with Maximum TNumber");
            Console.WriteLine("Tnumber = {0}, Name = {1}, Advisor = {2}\n", tmpStudent.TNumber, tmpStudent.Name, tmpStudent.Advisor);
            tmpStudent = list.Min();
            Console.WriteLine("Student with Minimum TNumber");
            Console.WriteLine("Tnumber = {0}, Name = {1}, Advisor = {2}\n", tmpStudent.TNumber, tmpStudent.Name, tmpStudent.Advisor);

            Console.WriteLine("Delete student with TNumber = 55\n");
            list.Delete(55);
            list.PrintLinkedList();

            Console.WriteLine("Remove student at end of list");
            tmpNode = list.RemoveFromEnd();
            Console.WriteLine("Removed Student is Tnumber = {0}, Name = {1}, Advisor = {2}", tmpNode.data.TNumber, tmpNode.data.Name, tmpNode.data.Advisor);
            Console.WriteLine("");
            list.PrintLinkedList();

            Console.WriteLine("Remove student at start of list");
            tmpNode = list.RemoveFromStart();
            Console.WriteLine("Removed Student is Tnumber = {0}, Name = {1}, Advisor = {2}", tmpNode.data.TNumber, tmpNode.data.Name, tmpNode.data.Advisor);
            Console.WriteLine("");
            list.PrintLinkedList();

            tmpStudent = list.Max();
            Console.WriteLine("Student with Maximum TNumber");
            Console.WriteLine("Tnumber = {0}, Name = {1}, Advisor = {2}\n", tmpStudent.TNumber, tmpStudent.Name, tmpStudent.Advisor);
            tmpStudent = list.Min();
            Console.WriteLine("Student with Minimum TNumber");
            Console.WriteLine("Tnumber = {0}, Name = {1}, Advisor = {2}\n", tmpStudent.TNumber, tmpStudent.Name, tmpStudent.Advisor);

            Console.WriteLine("Remove student at start of list");
            tmpNode = list.RemoveFromStart();
            Console.WriteLine("Removed Student is Tnumber = {0}, Name = {1}, Advisor = {2}", tmpNode.data.TNumber, tmpNode.data.Name, tmpNode.data.Advisor);
            Console.WriteLine("");
            list.PrintLinkedList();

            Console.WriteLine("Remove student at start of list with empty list");
            tmpNode = list.RemoveFromStart();
            if (tmpNode != null)
            {
                Console.WriteLine("Removed Student is Tnumber = {0}, Name = {1}, Advisor = {2}", tmpNode.data.TNumber, tmpNode.data.Name, tmpNode.data.Advisor);
                Console.WriteLine("");
            }

            Console.WriteLine("Remove student at end of list with empty list");
            tmpNode = list.RemoveFromEnd();
            if (tmpNode != null)
            {
                Console.WriteLine("Removed Student is Tnumber = {0}, Name = {1}, Advisor = {2}", tmpNode.data.TNumber, tmpNode.data.Name, tmpNode.data.Advisor);
                Console.WriteLine("");
            }
            Console.ReadLine();
        }
예제 #4
0
 public Node(Student s, Node forward, Node backward)
 {
     data = s;
     prev = backward;
     next = forward;
 }
예제 #5
0
 public Node()
 {
     data = null;
     prev = null;
     next = null;
 }
 public void Insert(Student s, int previousKey)
 {
     Node current = Search(previousKey);
     if (current != null)
     {
         Node temp = new Node(s, null, null);
         if (current == end)
         {
             temp.prev = current;
             current.next = temp;
             end = temp;
         }
         else
         {
             temp.next = current.next;
             temp.prev = current;
             current.next.prev = temp;
             current.next = temp;
             if (temp.next == null)
             {
                 end = temp;
             }
         }
         size++;
     }
     else
     {
         Console.WriteLine("Insert was not successful");
     }
 }
        // Find the maximum element
        public Student Min()
        {
            Node current = start;
            Student temp = new Student(int.MaxValue, "", "");
            while (current != null)
            {
                if (current.data.TNumber < temp.TNumber)
                {
                    temp.TNumber = current.data.TNumber;
                    temp.Name = current.data.Name;
                    temp.Advisor = current.data.Advisor;

                }
                current = current.next;
            }
            return temp;
        }