abclinuxu.cz AbcLinuxu.cz itbiz.cz ITBiz.cz HDmag.cz HDmag.cz abcprace.cz AbcPráce.cz
AbcLinuxu hledá autory!
Inzerujte na AbcPráce.cz od 950 Kč
Rozšířené hledání
×
    dnes 13:44 | Zajímavý projekt

    Hra Factorio dorazila na Printables. Hned teď si můžete stáhnout 65 různých modelů a nechat celou mimozemskou planetu oživnout na svém stole.

    Ladislav Hagara | Komentářů: 3
    včera 19:22 | Nová verze

    GNU Project Debugger aneb GDB byl vydán ve verzi 18.1. Podrobný přehled novinek v souboru NEWS.

    Ladislav Hagara | Komentářů: 0
    25.9. 23:33 | Humor

    Prezident USA Donald Trump během svého projevu na valném shromáždění OSN 22. září 2026 prohlásil, že umělá inteligence 'bude dále oficiálně nazývána superinteligencí', zkráceně SI. Svůj návrh zdůvodnil takto: 'Použití slova artificial činí inteligenci falešnou. Ona falešná není, ve skutečnosti je úžasná'. Zároveň ve svém proslovu prohlásil, že Spojené státy kategoricky odmítají jakékoliv pokusy o vytvoření 'globalistického

    … více »
    AfD 💙 | Komentářů: 17
    25.9. 23:22 | Nová verze

    Čínská technologická firma Xiaomi představila novou verzi 2.6 svého modelu MiMo, váhy modelů MiMo‑V2.6‑Pro‑RL a MiMo‑V2.6‑Flash‑RL jsou dostupné na HuggingFace pod licencí MIT. Výkonnější varianta Pro má přes bilion parametrů, z toho 42 miliard aktivních, úspornější Flash 309 miliard parametrů, z nichž se při generování aktivuje přibližně 15 miliard. Oba modely mají délku kontextového okna milion tokenů. Tyto MoE modely zvládají

    … více »
    AfD 💙 | Komentářů: 0
    25.9. 03:33 | Komunita

    Proběhl Snapdragon Summit 2026. Společnost Qualcomm se mimo jiné pochlubila během Linuxu na čipech Snapdragon X2. Zatím pouze v ranní verzi vhodné pro vývojáře linuxových distribucí a přispěvatele do jádra Linux.

    Ladislav Hagara | Komentářů: 0
    24.9. 21:11 | Nová verze

    Byla vydána nová verze 2.0 klienta F-Droid určeného pro instalaci bezplatných a otevřených mobilních aplikací do Androidu ze softwarového repozitáře F-Droid (Wikipedie). Jedná se o alternativu k Google Play.

    Ladislav Hagara | Komentářů: 7
    24.9. 12:11 | Komunita

    Debian Inference Portal nabízí vývojářům Debianu bezplatný přístup ke službám AI/LLM. Sponzorem je společnost Scaleway.

    Ladislav Hagara | Komentářů: 0
    24.9. 11:44 | Bezpečnostní upozornění

    Robert Ressl nalezl ve WordPressu kritickou zranitelnost CVE-2026-87902 s CVSS 9.2. Útočníkům umožňuje neoprávněný přístup k souborům a vzdálené spuštění kódu (RCE). Opravena je ve verzích 7.1.2, 7.0.6, 6.9.9…

    Ladislav Hagara | Komentářů: 0
    24.9. 03:33 | IT novinky

    Společnost Meta na dvoudenní konferenci Meta Connect 2026 představuje své novinky. Vypíchnout lze lehké brýle s funkci VR Meta VR Glasses. Do prodeje půjdou na jaře 2027 za cenu 1299,99 dolarů.

    Ladislav Hagara | Komentářů: 0
    23.9. 14:44 | Nová verze

    Google Chrome 154 byl prohlášen za stabilní. Nejnovější stabilní verze 154.0.8037.57 přináší řadu novinek. Podrobný přehled v poznámkách k vydání. Opraveno bylo 108 bezpečnostních chyb. Vylepšeny byly také nástroje pro vývojáře.

    Ladislav Hagara | Komentářů: 12
    Které desktopové prostředí na Linuxu používáte?
     (9%)
     (7%)
     (4%)
     (21%)
     (29%)
     (8%)
     (5%)
     (2%)
     (14%)
     (20%)
    Celkem 2739 hlasů
     Komentářů: 31, poslední 13.8. 00:27
    Rozcestník

    Administrace komentářů

    Jste na stránce určené pro řešení chyb a problémů týkajících se diskusí a komentářů. Můžete zde našim administrátorům reportovat špatně zařazenou či duplicitní diskusi, vulgární či osočující příspěvek a podobně. Děkujeme vám za vaši pomoc, více očí více vidí, společně můžeme udržet vysokou kvalitu AbcLinuxu.cz.

    Příspěvek
    18.12.2020 03:01 AfD 💙 | skóre: 42 | blog: Grétin blogísek | 🇮🇱==❤️ , 🇵🇸==💩 , 🇪🇺==☭
    Rozbalit Rozbalit vše Re: Jazyk C JEDNOSMĚRNĚ VÁZANÝ SEZNAM

    nesmíš namě ale říct že eště nespim :O :O :D ;D

    kuli tomu kolik je hodin si to jako určitě musíš pořádně zkontrolovat protože sotva udržim voči votevřený teďko už :O :O :D ;D pustit to ale de a asi to i jako funguje si myslim :D

    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
    #include <stdbool.h>
    
    // fakt jako maj bejt ty data voddělený vod těch položek??????? :O :O
    typedef struct
    {
        int id;
        char * name;
    }
    Object;
    
    typedef struct PolozkaSeznamu PolozkaSeznamu;
    struct PolozkaSeznamu
    {
        Object data;
        struct PolozkaSeznamu * next;
    };
    
    typedef struct 
    {
        PolozkaSeznamu * first;
        // k čemu jako potřebujem v dopředným seznamu pološku last když
        // ji jakoby žádná z těch funkcí nepoužívá nanic?? :O :O
        //PolozkaSeznamu * last;
    }
    Seznam;
    
    /**
     * Inicializace seznamu. Vytvori prazdny seznam.
     */
    Seznam * list_ctor()
    {
        Seznam * sznm = malloc(sizeof(Seznam));
        sznm->first = NULL;
        return sznm;
    }
    
    PolozkaSeznamu * novaPolozka(Object data)
    {
        PolozkaSeznamu * p = malloc(sizeof(PolozkaSeznamu));
        p->data = data;
        p->next = NULL;
        return p;
    }
    
    /**
     * Vlozi polozku na zacatek seznamu.
     */
    void list_insert_first(Seznam * sznm, PolozkaSeznamu * polozka)
    {
        //nejdřiv si zapamatujem první položku v seznamu protože ji jakoby přepišem novou první
        //ale tu starou potřebujem aby jsme ji napojili zatu první 
        PolozkaSeznamu * puvodniPrvni = sznm->first;
        
        // přepišem první položku novou skovanou v proměný 'polozka'
        sznm->first = polozka;
        
        // celou tu nudli položek/uzlů celýho seznamu/grafu teďko musíme zase připojit
        // známe uzlík kterým ta šňurka má pokračovat ==> toje ta původní první položka seznamu
        // nóó tak ji napojíme jako příští uzel naši nový první položky :O ;D
        polozka->next = puvodniPrvni;
        // nebo taky mužem přidat ukazatelem v tom poli takle Ňejak
        // sznm->first->next = puvodniPrvni
        // pracujem se stejnou věcí furt
    }
    
    /**
     * Vrati true, pokud je seznam prazdny.
     */
    bool isEmpty(Seznam * sznm)
    {
        // budem předpokládat že ten seznam je prázdnej když nemá žádnou první položku
        // noa první položku nemá když ukazatel 'first' kouká nikam jakože teda na NULL
        
        if(sznm->first == NULL)
            return true;
        else
            return false;
        
        //celý todleto mužem frajersky přepsat jako
        //return sznm->first;
    }
    
    /**
     * Odstrani prvni prvek seznamu, pokud je.
     */
    void list_delete_first(Seznam * sznm)
    {
        //kdybysme rovnou jentak dali dopryč první položku tak by se nám seznam rozbil :O :O
        // musíme si skovat druhou položku seznamu atu pak strčit misto ty první
        // kterou jakoby chcem vodstranit
        
        PolozkaSeznamu * prvni = sznm->first;
        PolozkaSeznamu * druha = prvni->next;
        
        //uvolníme paměť první položky
        // skoro uplně ždycky když někde děláme 'malloc' tak taky jakoby pak musíme někde dělat 'free'
        free(prvni);
        
        //jako novou první položku seznamu nastavíme druhou
        sznm->first = druha;
    }
    
    /**
     * Vrati pocet polozek seznamu.
     */
    unsigned int list_count(Seznam * sznm)
    {
        //spočítáme kolik máme položek v seznamu
        // uděláme si nějakou počítací proměnou která bude začínat na nule
        // a pudem seznamem vod první po poslední položku a za kažnou naštívenou položku
        // počítací proměnou inkrementujeme/zvíšíme o jedničku
        // nóó a to se jakoby po nás v týdletý funkci chce :D ;D
        
        //začínáme první položkou celýho seznamu
        // kdyby náááhodou byl seznam nazačátku prázdnej tak nám stejně tendleten argolytmus udělá že vrátí 0
        PolozkaSeznamu * pristiPolozka = sznm->first;
        
        // naše počítací proměná
        unsigned int kolik = 0;
        
        // todleto si měl dobře :D
        // děláme dokuď proměná 'příštíPoložka' neni null/jeji adresa je věčí od nuly takže jakoby 'true'
        while(pristiPolozka)
        {
            // zvednem počítací proměnou o 1 a jako příští položku nastavíme nóóóóóóó
            // příští položku příští položky :D :D :D ;D
            kolik++;
            pristiPolozka = pristiPolozka->next;
        }
        
        //vrátíme kolik sme napočítali
        return kolik;
        
    }
    
    /**
     * Najde polozku seznamu s nejmensim identifikatorem. Vraci NULL, pokud je
     * seznam prazdny.
     */
    PolozkaSeznamu *list_find_minid(Seznam * sznm)
    {
        //podobně jako v předchozí funkci budem procházet seznam položku popoložce
        // akorátže budem mit navíc jednu proměnou typu 'PoložkaSeznamu' noa do ní si budeme skovávat položku s nejvíc nejmenším id vobsaženýho oběktu ;D
        
        PolozkaSeznamu * pristiPolozka = sznm->first;
        
        //sem si budeme strkat tu položku s nejvíc nejmenším id oběktu
        // zatim si tam dáme tu uplně první naštívenou
        PolozkaSeznamu * nalezenaPolozka = sznm->first;
        
        while(pristiPolozka)
        {
            //pokuď id právě našívený položky je menčí než id zatim nalezený položky
            // tak si ji uložíme misto tý nalezený
            if(pristiPolozka->data.id < nalezenaPolozka->data.id)
                nalezenaPolozka = pristiPolozka;
            
            pristiPolozka = pristiPolozka->next;
        }
        
        //nakonec vrátíme ukazatel natu nalezenou položku seznamu
        return nalezenaPolozka;
        
    }
    
    /**
     * Najde polozku seznamu s odpovidajicim jmenem objektu. Vraci NULL, pokud
     * takova polozka v seznamu neni.
     */
    PolozkaSeznamu *list_find_name(Seznam * sznm, char *name)
    {
        // jeto zase uplně stejný jako předtim akorátže nebudem hledat nejmenčí id
        // ale první výskyt položky který data.name bude stejný
        
        PolozkaSeznamu * pristiPolozka = sznm->first;
        
        while(pristiPolozka)
        {
            // použijem funkci strcmp z knihovny string.h na dělání porovnání stringů
            // (vrací 0 když sou voba stringy stejný) noa když se ména schodujou tak
            // položku vrátíme
            if( strcmp(name, pristiPolozka->data.name) == 0)
                return pristiPolozka;
            
            pristiPolozka = pristiPolozka->next;
        }
        
        // pokuď sme došli až sem nóó tak asi jako hledaná položka v seznamu neni 
        // a podle zadání musíme vrátit null
        return NULL;
    }
    
    /**
     * Uvolneni seznamu.
     */
    void list_dtor(Seznam * sznm)
    {
        //projdem seznam a uděláme že vodstraníme všechny ty položky vobsažený
        // furt jeto všecko stejný
        
        PolozkaSeznamu * pristiPolozka = sznm->first;
        while(pristiPolozka)
        {
            //skováme si adresu současný oložky než ji přepišem příští
            PolozkaSeznamu * soucasna = pristiPolozka;
            pristiPolozka = pristiPolozka->next;
            //a tu současnou teďko uvolníme z paměti
            free(soucasna);
        }
        
        sznm->first = NULL;
        
    }
    
    int main()
    {
        printf("list_ctor...\n");
        Seznam * sznm = list_ctor();
    
        printf("list_empty...\n");
        printf("Seznam prazdny: %s\n", isEmpty(sznm) ? "ano" : "ne");
    
        PolozkaSeznamu *item;
    
        Object o1 = {42, "Honza"};
        printf("item_ctor...\n");
        item = novaPolozka(o1);
        printf("list_insert_first...\n");
        list_insert_first(sznm, item);
    
        printf("Seznam prazdny: %s\n", isEmpty(sznm) ? "ano" : "ne");
        printf("list_count...\n");
        printf("Pocet prvku v seznamu: %d\n", list_count(sznm));
    
        Object o2 = {2, "Malem"};
        item = novaPolozka(o2);
        printf("list_insert_first...\n");
        list_insert_first(sznm, item);
    
        Object o3 = {0, "Kralem"};
        item = novaPolozka(o3);
        printf("list_insert_first...\n");
        list_insert_first(sznm, item);
    
        printf("Pocet prvku v seznamu: %d\n", list_count(sznm));
    
        printf("Odstraneni prvniho prvku ze seznamu \n");
        list_delete_first(sznm);
        printf("Pocet prvku v seznamu: %d\n", list_count(sznm));
    
    
        // opetovne vlozeni objektu o1
        item = novaPolozka(o1);
        printf("list_insert_first...\n");
        list_insert_first(sznm, item);
    
        printf("list_find_minid...\n");
        item = list_find_minid(sznm);
        if (item != NULL) {
            printf("Polozka s nejmensim identifikatorem: {%d, \"%s\"}\n",
                item->data.id, item->data.name);
    	}
    	else
                printf("Polozka s nejmensim identifikatorem nenalezena\n");
    
        printf("list_find_name...\n");
        char* name = "Honza";
        item = list_find_name(sznm, name);
        if (item != NULL) {
                 printf("Polozka s daty %s nalezena\n", name);
    	}
    	else
                 printf("Polozka s daty %s nenalezena.\n",name);
    
        printf("list_dtor...\n");
        list_dtor(sznm);
        printf("Seznam prazdny: %s\n", isEmpty(sznm) ? "ano" : "ne");
    
        return 0;
    }
    
    

    V tomto formuláři můžete formulovat svou stížnost ohledně příspěvku. Nejprve vyberte typ akce, kterou navrhujete provést s diskusí či příspěvkem. Potom do textového pole napište důvody, proč by měli admini provést vaši žádost, problém nemusí být patrný na první pohled. Odkaz na příspěvek bude přidán automaticky.

    Vaše jméno
    Váš email
    Typ požadavku
    Slovní popis
    ISSN 1214-1267   www.czech-server.cz
    © 1999-2015 Nitemedia s. r. o. Všechna práva vyhrazena.