lista jednokierunkowa i wyszukiwanie w c#

0

Witam.
Jestem początkującym programistą dlatego proszę o pomoc w wykonaniu jednego zadania oto jego treść:

  1. Zaimplementuj listę jednokierunkową, algorytm wyszukiwania dla listy oraz algorytm sortowania przez
    proste wstawienie dla listy.
  2. Na podstawie elementów tablicy utwórz listę jednokierunkową.
  3. Posortuj listę metodą przez proste wstawianie i zmierz czas sortowania t1list.
    4.Wykonaj algorytm wyszukiwania liniowego poszukując po kolei poszczególne elementy listy.
    Bardzo proszę o pomoc bo jestem zielony jeśli chodzi o implementację listy w c# a muszę to zadanie zrobić na 22.11 z góry dziękuję.
0

pokaż co sam napisałeś i z czym konkretnie masz problem. gotowe rozwiązania tylko za gotówę.

0

Zadanie które mam do wykonania jest o wiele dłuższe te zagadnienia które podałem to są te rzeczy których nie umiem zrobić dlatego prosiłem o pomoc. Jeśli chcesz to mogę podać te algorytmy sortujące ale mam je dla tablic i nie wiem jak je przerobić żeby działały na listach. :(

0

tak samo jak dla tablic, tylko inacej :D
lol ale to brzmi glupio
wiesz jak "chodzi" sie po takiej liscie? zauwazasz roznice w sposobie iteracji listy jednokierunkowej i tablicy?
a te zadania sa banalne, wiec jesli z innymi sobie poradziles, to z tymi tez powinienes
pokaz najpierw implementacje listy jednokierunkowej

0

w ten sposób zaimplementowałem listę:
List<int[]> lista = new List<int[]>();

a tak utworzyłem listę na podstawie elementów z tablicy(tab):
{
for (i = 0; i < x; ++i)
lista.Add(tab);
break;
}
Jeśli są tu błędy proszę mnie poprawić

0

generic list, ktora dostarczyl MS w frameworku, to nie jest lista jednokierunkowa
przeczytaj najpierw http://pl.wikipedia.org/wiki/Lista_jednokierunkowa
w twoim przypadku pewnie chodzi o opisana tzw. liste wskaznikowa
bo gdyby zadanie dotyczylo uzycia List<T> byloby troche bezsensu, bo chociazby pkt 1 nie moglbys spelnic, bo ta struktura jest juz zaimplmentowana :)

0

Poprawiłem i teraz do tego momentu mi działa oto co mam:

namespace lista1
{
class Program
{
static void Main(string[] args)
{
int x, i;
int[] tab;
List<int> lista = new List<int>();
Console.WriteLine("Podaj wielkość tablicy:");
string a;
a = Console.ReadLine();
x = int.Parse(a) + 1;
tab = new int[x];
Random r = new Random();
bool dalej = true;
while (dalej)
{
Console.WriteLine("wybierz opcję");
Console.WriteLine("opcja 1 wypełnia tablicę elementami losowymi");
Console.WriteLine("opcja 2 podgląd wygenerowanej tablicy losowej");
Console.WriteLine("opcja 3 na podstawie elementów tablicy tworzy listę jednokierunkową");
Console.WriteLine("opcja 4 podgląd utworzonej listy");

            Console.WriteLine("opcja 9 wyjście z programu");


            string s = Console.ReadLine();
            int o = int.Parse(s);


            switch (o)
            {
                case 1:
                    {
                        for (i = 1; i < x; i++)
                        {
                            tab[i] = r.Next(10000000);
                        }
                        break;
                    }
                case 2:
                        {
                    Console.WriteLine("Utworzona tablica losowa:");
                    for (i = 1; i < x; i++)
                    Console.WriteLine("{1}", i,tab[i]);
                    break;
                        }

                case 3:
                    {
                        for (i = 1; i < x; ++i)
                            lista.Add(tab[i]);
                        break;
                    }
                case 4:
                    {
                        Console.WriteLine("utworzona lista");
                        foreach (int Element in lista)
                            Console.WriteLine("{0}", Element.ToString());
                        
                        break;
                    }
           


            }
        }
    }

}

}
teraz spróbuje zrobić to sortowanie listy :)

0

jak to ujac zebys zrozumial
nie wykonales zadania
uzyles istniejacego typu danych (List<T>), NIE ZAIMPLEMENTOWALES!
http://pl.wikipedia.org/wiki/Implementacja_(informatyka)

ten kod ktory podales, jest ok, ale nie robi tego co masz w zadaniu

ty masz sam stworzyc klase podobna do List<T>, ktora bedzie odpowiadala definicji listy jednokierunkowej
jak to zrozumiesz mozemy pomoc ci w rozwiazaniu przeszkod, ale jesli nie to nie pisz tu wiecej :|

0

Wiem że użyłem istniejącego typu danych (List<T>), i sorry że nie napisałem dokładnie o co chodzi tzn. źle ująłem treść zadania ponieważ mogę użyć istniejącego typu danych po prostu treść tego zadania każdy może implementować w różnym języku dlatego ja wybrałem C# by móc skorzystać z tego istniejącego typu danych. :)

0

Bardzo bym prosił żeby mnie chociaż ktoś teraz nakierował w jaki sposób mam zrobić to sortowanie przez proste wstawianie dla listy

0

masz pseudokod z wiki
0. Insert_sort(A,n)

  1. for i=2 to n :
  2.   klucz = A[i]                                    
    
  3.   j = i - 1                                       
    
  4.   while j>0 and A[j]>klucz:                       
    
  5.      A[j + 1] = A[j]              
    
  6.      j = j - 1                    
    
  7.   A[j+1] = klucz       
    

http://pl.wikipedia.org/wiki/Sortowanie_przez_wstawianie

0

Widziałem ten kod na wiki ale on jest dla tablicy.

0

A dla listy List<T> już nie zadziała? To jest ogólna idea, działa i dla tablic, i dla list :) Ogólnie, dla każdego uporządkowanego w ten sposób zbioru danych.

0

ok to już coś więc mam:
public static void Sort(List<int> a)
{
int n = a.Count;
for (int i = 0; i < n - 1; i++)
{
int k = i;
int x = a[i];
for (int j = i + 1; j < n; j++)
{
if (a[j].CompareTo(x) < 0)
{
k = j;
x = a[j];
}
}
a[k] = a[i];
a[i] = x;
}
}

0

ok to z sortowaniem i wyszukiwaniem sobie poradziłem okazuje się jednak że mam w tym programie listę dwukierunkową a ma być jednokierunkowa może mi ktoś powiedzieć jak to przerobić żeby było dobrze??

0

I ja już nie wiem znalazłem stronkę http://www.pcworld.pl/artykuly/51400/Generics.typy.ogolne.html gdzie jest napisane że LinkedList<T> jest dwukierunkowa a List<T> jest jednokierunkowa więc wynika z tego że mam dobrze i nie muszę poprawiać

0

hmmm moim zdaniem o List<T> w ogole nie mozna powiedziec ze jest to lista jedno- czy dwukierunkowa, jest to po prostu lista, bo jej implmentacja opiera sie na tablicy
w .net masz zaimplementowana liste dwukierunkowa LinkedList<T>
jak potrzebujesz listy jednokierunkowej to niestety musisz sam ja zaimplmentowac

0

List<T> to nie jest tak naprawdę lista lecz dynamiczna tablica. Ok, możemy to nazwać listą, bo w "ludzkim" znaczeniu tego słowa jest to pewna lista, ale nie możemy mówić o jej kierunkowości.

Listy jedno czy dwukierunkowe polegają na tym, że elementy wskazują na następne lub poprzednie elementy w kolekcji (jednokierunkowa na jeden z nich, dwukierunkowa na oba). Taka lista jest jakby łańcuchem powiązanych ze sobą elementów. To nie ma związku z tablicą, ani z List<T>.
Jeśli zatem miałeś użyć listy jednokierunkowej, a użyłeś List<T>, to nie wiem co będzie, ale gdyby to ode mnie zależało, to ja nie zaliczyłbym projektu.

A w "artykule" są po prostu bzdury, pewno jakiś student pisał. ;P

0

somekind zobacz kto napisal artykul: Tomasz Kopacz
to troche przerazajace jesli ten kolo pisze takie rzeczy
no, ale moze wtedy jeszcze nie pracowal w M$ i nie przeszdl wszystkich szkolen :D

0

Jeśli List jest listą opartą na tablicy to co w C# robi klasa ArrayList?

0

@massther - nie wiem kto to jest Tomasz Kopacz, ale jak widzę potrafi walnąć jak łysy grzywką o parapet.

@donkey7 - List to po prostu nowsza, generyczna wersja ArrayList.

0

na poczatku bylo ArrayList, ale bylo ono zle i M$ stworzyl .net 2.0 i typy generyczne i dal nam List<T> i bylo to dobre i programisci .net pokochali typy generyczne bez boxing-unboxing :)

Kopacz to jeden z najlepiej ogarniajacych ludkow w polskim MS, dokladnie nie pamietam kim jest, jakims ewangelista :) pewnie
sprawia wrazenie bardzo kompetentnego

0

Jest często prelengentem na różnych konferencjach związanych z IT. Wiedze ma kolosalną :) Widziałem na własne oczy.

0

Hmm... Czyli lista oparta na tablicy jest jednokierunkowa, bo tak powiedział jeden gość z M$?

0

Pomyłki się zdarzają i najlepszym :)

0

Wiadomo. Ale ustalmy jakieś fakty, żeby nie mącić ludziom w głowach, i żeby pomyłki nie były powielane.

1 użytkowników online, w tym zalogowanych: 0, gości: 1