03.10. Liste i metode za rad sa listama
Uvod
Do sada smo učili kako se koriste nizovi – strukture podataka koje čuvaju više vrednosti istog tipa. Nizovi su veoma važni, ali imaju svoja ograničenja. Na primer:
-
Njihova dužina se mora unapred odrediti i ne može se kasnije menjati.
-
Kada želimo da dodamo novi element, često moramo praviti novi niz.
U objektno-orijentisanim jezicima, kao što je C#, postoje fleksibilnije strukture za čuvanje podataka. Jedna od najvažnijih je lista (List).
Lista se ponaša slično nizu, ali joj dužina nije unapred fiksirana – možemo dodavati i uklanjati elemente u toku rada programa.
1. čas : Osnovna upotreba lista
Da bismo koristili liste u C#, potrebno je da uključimo prostor imena System.Collections.Generic:
using System;
using System.Collections.Generic;
class Program
{
static void Main()
{
List<int> brojevi = new List<int>(); // kreiranje prazne liste celih brojeva
}
}
Dodavanje elemenata (Add)
List<int> brojevi = new List<int>();
brojevi.Add(10);
brojevi.Add(20);
brojevi.Add(30);
Console.WriteLine("Lista sadrži:");
foreach (int broj in brojevi)
{
Console.WriteLine(broj);
}
Rezultat:
10
20
30
Umetanje na određeno mesto (Insert)
brojevi.Insert(1, 15); // na poziciju 1 ubacujemo broj 15
Lista sada izgleda: 10, 15, 20, 30
Uklanjanje elemenata (Remove i RemoveAt)
brojevi.Remove(20); // uklanja element 20
brojevi.RemoveAt(0); // uklanja element na indeksu 0 (prvi element)
Brojanje elemenata (Count)
Console.WriteLine("Ukupno elemenata: " + brojevi.Count);
Zadatak br 1
Napisati program koji omogućava unos 5 brojeva u listu, zatim:
-
Ispisuje sve brojeve iz liste.
-
Dodaje broj 100 na kraj liste.
-
Uklanja drugi element.
-
Ispisuje koliko elemenata lista sadrži.
Rešenje zadatka 1
using System;
using System.Collections.Generic;
class Program
{
static void Main()
{
List<int> lista = new List<int>();
for (int i = 0; i < 5; i++)
{
Console.Write("Unesite broj: ");
int x = int.Parse(Console.ReadLine());
lista.Add(x);
}
Console.WriteLine("Sadržaj liste:");
foreach (int broj in lista)
Console.Write(broj + " ");
lista.Add(100);
lista.RemoveAt(1);
Console.WriteLine("\nPosle izmena:");
foreach (int broj in lista)
Console.Write(broj + " ");
Console.WriteLine("\nUkupno elemenata: " + lista.Count);
}
}
2. čas : Metode za rad sa listama
Sortiranje (Sort)
List<int> brojevi = new List<int> { 5, 2, 8, 1, 9 };
brojevi.Sort();
Console.WriteLine("Sortirana lista:");
foreach (int broj in brojevi)
Console.WriteLine(broj);
Rezultat:
1
2
5
8
9
Provera da li lista sadrži element (Contains)
if (brojevi.Contains(5))
Console.WriteLine("Lista sadrži broj 5");
else
Console.WriteLine("Broj 5 nije u listi");
Brisanje svih elemenata (Clear)
brojevi.Clear();
Console.WriteLine("Posle Clear metoda lista ima: " + brojevi.Count + " elemenata.");
Zadatak br 2
Napisati program koji:
-
Omogućava unos proizvoljnog broja imena (koristiti
whilepetlju – prekida se kada se unese prazno ime). -
Sortira imena i ispisuje ih.
-
Proverava da li se ime "Marko" nalazi u listi.
-
Briše sve elemente i ispisuje koliko elemenata lista sada ima.
Rešenje zadatka 2
using System;
using System.Collections.Generic;
class Program
{
static void Main()
{
List<string> imena = new List<string>();
string unos;
while (true)
{
Console.Write("Unesite ime (ENTER za kraj): ");
unos = Console.ReadLine();
if (unos == "") break;
imena.Add(unos);
}
imena.Sort();
Console.WriteLine("Sortirana imena:");
foreach (string ime in imena)
Console.WriteLine(ime);
if (imena.Contains("Marko"))
Console.WriteLine("Ime Marko se nalazi u listi.");
else
Console.WriteLine("Ime Marko se ne nalazi u listi.");
imena.Clear();
Console.WriteLine("Posle Clear, lista ima " + imena.Count + " elemenata.");
}
}
Zaključak
-
Liste su fleksibilnije od nizova jer omogućavaju dodavanje i uklanjanje elemenata u toku rada programa.
-
Osnovne metode koje se koriste su: Add, Remove, Insert, Count.
-
Dodatne metode omogućavaju rad sa podacima: Sort, Contains, Clear.
-
Kroz liste učenici mogu razvijati intuitivnije programe i lakše manipulisati podacima.
--
Dodatak: