Advertisement
Danielos168

Lista Dowiązana

Jan 19th, 2020
131
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 3.55 KB | None | 0 0
  1. using System;
  2.  
  3. // rekurencyjne struktury danych - lista jednokierunkowa
  4. // wersja strukturalna
  5. public class Lista
  6. {
  7.     public int dane;// w węźle przechowujemy liczbę
  8.     public Lista następny; // oraz referencję do następnego
  9. }
  10.  
  11. static class InterfejsListy
  12. {
  13.     static public bool CzyPusta(Lista l)
  14.     {
  15.         return l == null;
  16.     }
  17.  
  18.     // obliczamy rozmiar przechodząc przez wszystkie elementy listy
  19.     // aż dojedziemy do nulla
  20.     static public int PodajRozmiar(Lista l)
  21.     {
  22.         int licznik = 0;
  23.         for (Lista tmp = l; tmp != null; tmp = tmp.następny)
  24.             licznik++;
  25.         return licznik;
  26.     }
  27.  
  28.     static public Lista Dodaj(Lista l, int liczba) //Do głowy
  29.     {
  30.         Lista tmp = new Lista(); // nowy węzeł
  31.         tmp.dane = liczba;
  32.         tmp.następny = l;  //dotychczasowa głowa staje się "następny"
  33.         return tmp;        // dodany element staje się głową
  34.     }
  35.  
  36.     static public Lista Usuń(Lista l) //Z głowy
  37.     {
  38.         if (l != null) // sprawdzamy, czy lista nie jest pusta
  39.             return l.następny;
  40.         else return l;
  41.     }
  42.  
  43.     static public int Podaj(Lista l, int i) //i-ty element
  44.     {
  45.         int licznik = 0;
  46.         for (Lista tmp = l; tmp != null; tmp = tmp.następny)
  47.             if (licznik++ == i) return tmp.dane;
  48.         throw new Exception("indeks poza zakresem!");
  49.     }
  50.  
  51.     static public int CzyZawiera(Lista l, int n) //element o wartości n
  52.     {
  53.         int licznik = 0;
  54.         for (Lista tmp = l; tmp != null; tmp = tmp.następny, licznik++)
  55.         {
  56.             if (tmp.dane == n) return licznik;
  57.         }
  58.         return -1;
  59.     }
  60.  
  61.  
  62.  
  63.     static public Lista Dodaj(Lista L, int n, int i) //dodaje element o wartości n na i-tej pozycji
  64.     {
  65.         if (i == 0) return Dodaj(L, n);
  66.         int licznik = 0;
  67.         for (Lista tmp = L; tmp != null; tmp = tmp.następny, licznik++)
  68.             if (licznik == i - 1)
  69.             {
  70.                 Lista l = new Lista();
  71.                 l.dane = n;
  72.                 l.następny = tmp.następny;
  73.                 tmp.następny = l;
  74.                 return L;
  75.             }
  76.         throw new Exception("indeks poza zakresem!");
  77.     }
  78.  
  79.     static public Lista Usuń(Lista L, int i) //usuwa element na i-tej pozycji
  80.     {
  81.         if (i == 0) return Usuń(L);
  82.         int licznik = 0;
  83.         for (Lista tmp = L; tmp.następny != null; tmp = tmp.następny, licznik++)
  84.             if (licznik == i - 1)
  85.             {
  86.                 tmp.następny = tmp.następny.następny;
  87.                 return L;
  88.             }
  89.         throw new Exception("indeks poza zakresem!");
  90.     }
  91.  
  92.     ////////////////////////////////////////////////////////////////////////
  93.  
  94.     // wyświetlanie
  95.     static public void Wyświetl(Lista l)
  96.     {
  97.         for (Lista tmp = l; tmp != null; tmp = tmp.następny)
  98.             Console.WriteLine(tmp.dane);
  99.         Console.WriteLine();
  100.     }
  101. }
  102.  
  103.  
  104. class Program
  105. {
  106.     static void Main(string[] args)
  107.     {
  108.         Lista mojaLista = null; // głowę listy muszę pamiętać
  109.  
  110.         Lista l1 = new Lista();
  111.         for (int i = 1; i < 10; i++)
  112.         {
  113.            l1 = InterfejsListy.Dodaj(l1, i);
  114.         }
  115.         InterfejsListy.Wyświetl(l1);
  116.         Console.WriteLine("----");
  117.  
  118.         Lista l2 = new Lista();
  119.         for (int i = 10; i < 20; i++)
  120.         {
  121.             l2 = InterfejsListy.Dodaj(l2, i);
  122.         }
  123.         InterfejsListy.Wyświetl(l2);
  124.  
  125.         Console.WriteLine("\nWciśnij klawisz...");
  126.         Console.ReadKey();
  127.     }
  128. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement