[WikiDyd] [TitleIndex] [WordIndex

C# Lista liniowa i program testujący

Prosta implementacja listy liniowej z operacjami dodawania na koniec, wstawiania na początek i wstawiania w porządku naturalnym

   1 using System;
   2 using System.Collections.Generic;
   3 using System.Text;
   4 
   5 namespace aisd
   6 {
   7     // Single linked list
   8     public class List<T> where T : IComparable<T>
   9     {
  10         public List()
  11         {
  12             head = null;
  13         }
  14         public void InsertAtFront(T d)
  15         {
  16             head = new Node(d, head);
  17         }
  18         public void AppendAtEnd(T d)
  19         {
  20             if (head == null)
  21                 head = new Node(d);
  22             else
  23             {
  24                 Node i = head;
  25                 while (i.next != null)
  26                     i = i.next;
  27                 i.next = new Node(d);
  28             }
  29         }
  30         public void InsertInOrder(T d)
  31         {
  32             if (head == null || head.data.CompareTo(d) > 0 )
  33                 head = new Node(d,head);
  34             else
  35             {
  36                 Node i = head;
  37                 while (i.next != null && i.next.data.CompareTo(d) <= 0 )
  38                     i = i.next;
  39                 i.next = new Node(d, i.next);
  40             }
  41         }
  42         public override string ToString()
  43         {
  44             string s = "[";
  45             Node i = head;
  46             while (i != null)
  47             {
  48                 s += " " + i.data;
  49                 i = i.next;
  50             }
  51 
  52             return s + " ]";
  53         }
  54         class Node
  55         {
  56             public T data;
  57             public Node next;
  58             public Node(T d)
  59             {
  60                 data = d;
  61                 next = null;
  62             }
  63             public Node(T d, Node n)
  64             {
  65                 data = d;
  66                 next = n;
  67             }
  68         }
  69         private Node head;
  70     }
  71 }

Program testujący - aplikacja konsolowa tworząca trzy listy napisów, do których wstawiane są (w różny sposób) argumenty z linii wywołania.

   1 using System;
   2 using System.Collections.Generic;
   3 using System.Text;
   4 using aisd;
   5 
   6 namespace ListTest
   7 {
   8     class Program
   9     {
  10         static void Main(string[] args)
  11         {
  12             aisd.List<string> ss = new aisd.List<string>();
  13             aisd.List<string> sr = new aisd.List<string>();
  14             aisd.List<string> so = new aisd.List<string>();
  15             foreach (string a in args)
  16             {
  17                 ss.AppendAtEnd(a);
  18                 sr.InsertAtFront(a);
  19                 so.InsertInOrder(a);
  20             }
  21             Console.WriteLine("Simple order:       " + ss);
  22             Console.WriteLine("Reverse order:      " + sr);
  23             Console.WriteLine("Incrementing order: " + so);
  24         }
  25     }
  26 }

Zadanie do rozwiązania: dodać metodę usuwającą pierwszy(ostatni) element listy.


2015-09-23 06:32