Kihagyás

5.4. Lista

A lista gyakorlatilag egy változó elemszámú tömb. Mint korábban láthattuk a tömb deklarációjánál meg kell adni az elemek számát, amelynél a helyet le kell foglalni akkor is, ha nem töltjük fel valós adatokkal.

A listánál memóriahelyet takarítunk meg, mivel dinamikusan változhat az elemek száma és pontosan annyi helyet foglalunk le a lista számára, amennyire éppen szükségünk van.

A lista tehát index-érték párokból áll, ahol egy elemre az index vagy az érték segítségével hivatkozhatunk.

Lista deklarációja:

List<tipus> listanev = new List<tipus>();

Műveletek listaelemekkel:

  • elem hozzáadása: listanev.Add(elem)
  • több elem hozzáadása a már meglévő lista végéhez: listanev.AddRange(elemek). Az „elemek” lehet tömb, vagy lista.
  • elem eltávolítása: listanev.Remove(elem). Ha értéke false, akkor az elem nem szerepel a listán.
  • adott indexű elem eltávolítása: listanev.RemoveAt(elemindexe).
  • egy elem sorszámát adja vissza: listanev.IndexOf(elemindexe) (ha nincs a listán, akkor pedig -1-et).
  • lista kiürítése: listanev.Clear().

A lista elemeit a [] operátorral érhetjük el.

52. feladat

Hozzunk létre egy 6 elemű listát, amely egész számokból áll! A számokat véletlenszerűen állítsuk elő a 0-20 intervallumból, majd írjuk ki a képernyőre az elemeket és a lista elemszámát! Töröljünk egy tetszőleges sorszámú, majd tetszőleges értékű elemet a listából és írjuk ki az elemeket és aktuális elemszámot! Töröljük a listát és írjuk ki az elemszámot! Név: lista

Megoldás:

using System;
using System.Collections.Generic;

namespace ListaPélda
{
    class Program
    {
        static void Main()
        {
            Random vsz = new Random();
            List<int> lista = new List<int>();

            Console.WriteLine(" A lista elemei: ");
            for (int i = 0; i < 6; i++)
            {
                lista.Add(vsz.Next(21));
                Console.Write("{0,5}", lista[i]);
            }

            Console.WriteLine();
            Console.WriteLine(" A lista elemeinek száma: {0}", lista.Count);

            Console.Write(" Hányadik sorszámú elemet töröljük? ");
            int indexDel = Convert.ToInt32(Console.ReadLine());
            lista.RemoveAt(indexDel);

            for (int i = 0; i < 5; i++) 
            {
                Console.Write("{0,5}", lista[i]);
            }

            Console.WriteLine();
            Console.WriteLine(" A lista elemeinek száma: {0}", lista.Count);

            Console.Write(" Melyik elemet töröljük? ");
            int ertekDel = Convert.ToInt32(Console.ReadLine());
            lista.Remove(ertekDel);

            for (int i = 0; i < 4; i++) 
            {
                Console.Write("{0,5}", lista[i]);
            }

            Console.WriteLine();
            Console.WriteLine(" A lista elemeinek száma: {0}", lista.Count);

            lista.Clear();
            Console.WriteLine(" A törölt lista elemeinek száma: {0}", lista.Count);

            Console.ReadKey();
        }
    }
}