SORU
30 Mart 2012, Cuma


En kolay c bir Listesini Döndür *

Listeler 5* *bir listesi var

Demek Döndür:

=> {2,3,4,5,1} => {3,4,5,1,2} => {4,5,1,2,3}

Belki döndürmek bunun için iyi bir kelime değil, ama ben ne anlama geldiğini umarım anlamışsınızdır

Benim sorum, en kolay yolu (kısa kod, c# 4 Seri hazır) nedir, ve performans (makul performans) çarptı olmayacaktır

Teşekkürler.

CEVAP
30 Mart 2012, Cuma


List<T>

basit(List<T>) kullanmak için:

int first = list.RemoveAt(0);
list.Add(first);

Performansı kötü olsa da - O(n).

Dizi

Bu temelde List<T> sürüme eşdeğer, ama daha fazla manuel:

int first = array[0];
Array.Copy(array, 1, array, 0, array.Length - 1);
array[array.Length - 1] = first;

LinkedList<T>

Eğer LinkedList<T> yerine kullanabilirsiniz eğer, bu çok daha basit olurdu:

int first = linkedList.First;
linkedList.RemoveFirst();
linkedList.AddLast(first);

Bu işlem sürekli her zaman olduğu gibi O(1) ' dir.

Queue<T>

bir sıra kullanarak cadrell0 çözüm Dequeue öğeyi kaldırır gibi tek bir deyimvedöndürür:

queue.Enqueue(queue.Dequeue());

Performans bu karakteristik herhangi bir belge bulamadım, benbekliyoruzQueue<T> bir dizi ve dizin "sanal başlangıç noktası da bu(1) O başka bir çözümü olan." kullanılarak uygulanan

Tüm bu durumlarda liste boş ilk olmak için kontrol etmek isteyeceğini unutmayın. (Bu bir hata olarak görecek, ya da bir no-op.)

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • mist64

    mist64

    30 Mayıs 2006
  • Simon Hayter

    Simon Hayter

    20 HAZİRAN 2010
  • TokShogun

    TokShogun

    6 HAZİRAN 2009