» »

[c#] LinkedList branje poljubnega elementa

[c#] LinkedList branje poljubnega elementa

KernelPanic ::

Spostovani!

V LinkedList imam 10 elementov in sedaj imam zelo butastvo vprasanje, kako dobim iz LinkedList-a, naprimer, 3ji ali 5i element?

Iskal sem po googlu, vendar nisem nicesar nasel, z navadnim List-om znam delati, v osnovi je to eno in isto, samo, da je LinkedList dvojno povezan (ima pointer na prejsnjega in naslednjega).

Lp,
M.

genesiss ::

Sprehodit se boš moral čez list. Ker je double-linked lahko malo optimiziraš in greš iskat s tiste strani, ki je bližja elementu (od zadaj ali od spredaj).

FrEaKmAn ::

LinkedList.ElementAt(3|5)? - http://msdn.microsoft.com/en-us/library...

KernelPanic ::

FrEaKmAn je izjavil:

LinkedList.ElementAt(3|5)? - http://msdn.microsoft.com/en-us/library...
To sem videl, vendar ko probam skompajlat sledeco kodo:
        public Advertisement currentAdvertisement
        {
            get { return this.m_listAdvertisements.ElementAt(this.m_iCurrentIndex); }
        }
, dobim napako:
Error	1	'System.Collections.Generic.LinkedList<FrontOffice.Elements.Advertisement>' does not contain a definition for 'ElementAt' and no extension method 'ElementAt' accepting a first argument of type 'System.Collections.Generic.LinkedList<FrontOffice.Elements.Advertisement>' could be found (are you missing a using directive or an assembly reference?)	D:\Projects\BarAdvetiser\FrontOffice\ViewModels\PresentationViewModel.cs	60	52	FrontOffice

FrEaKmAn ::

kako dobiš m_listAdvertisements in m_iCurrentIndex

KernelPanic ::

FrEaKmAn je izjavil:

kako dobiš m_listAdvertisements in m_iCurrentIndex
V istem classu (fajlu) je deklariran seznam:
        #region Input Advertisements
        private LinkedList<Advertisement> _listAdvertisements;
        internal LinkedList<Advertisement> m_listAdvertisements
        {
            get { return _listAdvertisements; }
            private set { _listAdvertisements = value; }
        }
        #endregion Input Advertisements
in tudi m_iCurrentIndex:
        #region Advertisement Index
        private long _iCurrentIndex = 0;
        public long m_iCurrentIndex
        {
          get { return _iCurrentIndex; }
          private set
          {
              if (this.m_iCurrentIndex != value)
              {
                  this.m_iCurrentIndex = value;
                  OnPropertyChanged("CurrentSlide");
                  OnPropertyChanged("CurrentIndex");
              }
          }
        }
        #endregion Advertisement Index

FrEaKmAn ::

ElementAt sprejema int in ne long?

moj primer deluje brez problema
   
LinkedList<String> LinkedList = new LinkedList<String>();
LinkedList.AddFirst("Ana");
LinkedList.AddFirst("Banana");

MessageBox.Show(LinkedList.ElementAt<String>(0));

KernelPanic ::

Sm spremenu long v int, isti drek, katere references pa imas v projektu?

FrEaKmAn ::

celotna koda

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace TestsCSharp
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void Form1_Load(object sender, EventArgs e)
        {
            LinkedList<String> LinkedList = new LinkedList<String>();
            LinkedList.AddFirst("Ana");
            LinkedList.AddFirst("Banana");

            MessageBox.Show(LinkedList.ElementAt(0));
        }
    }
}

KernelPanic ::

Matr, zdej sm pa dodal tvoje using stavke, pa kr dela ... 8-O

FrEaKmAn ::

zanimivo :)

KernelPanic ::

u cem je fora, mogoce ves?

FrEaKmAn ::

lahko pastaš tvoje stare usinge?

KernelPanic ::

using System.Windows;
using System.Windows.Input;
using TestFull8229.Commands;

FrEaKmAn ::

manjka ti
using System.Collections.Generic;

samo če nisi nič brisal, bi ti moral to dodati avtomatsko. Občutek imam da je problem nekje drugje...

Zgodovina sprememb…

  • spremenil: FrEaKmAn ()

fiction ::

Fora je pomoje v tem, da ni bilo "using System.Linq". ElementAt() je namreč definirana kot extension metoda od IEnumerable(T), kar implementira tudi LinkedList(T)), ampak nahaja se pa "v System.Linq.Enumerable".

Je pa to O(n) metoda, ne tako kot index based dostop v List(T), ki je O(1).

FrEaKmAn ::

makes sense...


Vredno ogleda ...

TemaSporočilaOglediZadnje sporočilo
TemaSporočilaOglediZadnje sporočilo
»

[C#] Razširitev Linked List-a

Oddelek: Programiranje
51117 (783) Ciklamen
»

[c#] Sklad

Oddelek: Programiranje
91592 (1452) Spura
»

[c#] Ustvarjanje objekta v drugem razredu

Oddelek: Programiranje
81667 (1612) Cvenemir
»

c sharp LinkedList - Naloga

Oddelek: Programiranje
91862 (1813) Msatir
»

Povezani seznam

Oddelek: Programiranje
132119 (1716) pohano

Več podobnih tem