Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using System;
- // rekurencyjne struktury danych - lista jednokierunkowa
- // wersja strukturalna
- public class Lista
- {
- public int dane;// w węźle przechowujemy liczbę
- public Lista następny; // oraz referencję do następnego
- }
- static class InterfejsListy
- {
- static public bool CzyPusta(Lista l)
- {
- return l == null;
- }
- // obliczamy rozmiar przechodząc przez wszystkie elementy listy
- // aż dojedziemy do nulla
- static public int PodajRozmiar(Lista l)
- {
- int licznik = 0;
- for (Lista tmp = l; tmp != null; tmp = tmp.następny)
- licznik++;
- return licznik;
- }
- static public Lista Dodaj(Lista l, int liczba) //Do głowy
- {
- Lista tmp = new Lista(); // nowy węzeł
- tmp.dane = liczba;
- tmp.następny = l; //dotychczasowa głowa staje się "następny"
- return tmp; // dodany element staje się głową
- }
- static public Lista Usuń(Lista l) //Z głowy
- {
- if (l != null) // sprawdzamy, czy lista nie jest pusta
- return l.następny;
- else return l;
- }
- static public int Podaj(Lista l, int i) //i-ty element
- {
- int licznik = 0;
- for (Lista tmp = l; tmp != null; tmp = tmp.następny)
- if (licznik++ == i) return tmp.dane;
- throw new Exception("indeks poza zakresem!");
- }
- static public int CzyZawiera(Lista l, int n) //element o wartości n
- {
- int licznik = 0;
- for (Lista tmp = l; tmp != null; tmp = tmp.następny, licznik++)
- {
- if (tmp.dane == n) return licznik;
- }
- return -1;
- }
- static public Lista Dodaj(Lista L, int n, int i) //dodaje element o wartości n na i-tej pozycji
- {
- if (i == 0) return Dodaj(L, n);
- int licznik = 0;
- for (Lista tmp = L; tmp != null; tmp = tmp.następny, licznik++)
- if (licznik == i - 1)
- {
- Lista l = new Lista();
- l.dane = n;
- l.następny = tmp.następny;
- tmp.następny = l;
- return L;
- }
- throw new Exception("indeks poza zakresem!");
- }
- static public Lista Usuń(Lista L, int i) //usuwa element na i-tej pozycji
- {
- if (i == 0) return Usuń(L);
- int licznik = 0;
- for (Lista tmp = L; tmp.następny != null; tmp = tmp.następny, licznik++)
- if (licznik == i - 1)
- {
- tmp.następny = tmp.następny.następny;
- return L;
- }
- throw new Exception("indeks poza zakresem!");
- }
- ////////////////////////////////////////////////////////////////////////
- // wyświetlanie
- static public void Wyświetl(Lista l)
- {
- for (Lista tmp = l; tmp != null; tmp = tmp.następny)
- Console.WriteLine(tmp.dane);
- Console.WriteLine();
- }
- }
- class Program
- {
- static void Main(string[] args)
- {
- Lista mojaLista = null; // głowę listy muszę pamiętać
- Lista l1 = new Lista();
- for (int i = 1; i < 10; i++)
- {
- l1 = InterfejsListy.Dodaj(l1, i);
- }
- InterfejsListy.Wyświetl(l1);
- Console.WriteLine("----");
- Lista l2 = new Lista();
- for (int i = 10; i < 20; i++)
- {
- l2 = InterfejsListy.Dodaj(l2, i);
- }
- InterfejsListy.Wyświetl(l2);
- Console.WriteLine("\nWciśnij klawisz...");
- Console.ReadKey();
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement