Na této stránce se používá SVG a MathML.
Firefox je umí a některé další prohlížeče se pro ně dají upravit.


Napište funkce, které jsou následně definovány nakopírujte si (pomocí ^C a ^V) do hlavičkového souboru seznam.h) včetně definice (vizte výše) spojového seznamu linkedList a jeho člena. Přidejte do souboru seznam.h):
// zacatek podprogramu zavislych na nasi konkretni definici clenu seznamu

#define TEXT_LENGTH 16

typedef char slovo[TEXT_LENGTH];    

typedef struct mbr {
     	     	slovo name;
     	     	struct mbr *next;
     	} member;

typedef member* linkedList;

/**
 * Vytvori seznam z dat ctenych ze zadaneho streamu. 
 *     Prvni text ze souboru ci z klavesnice bude prvni ve spojovem seznamu, 
 *         druhy bude za ni atd. az posledni ze souboru ci z klavesnice bude posledni
 *
 * @param z adresa, z niz se bere anebo do niz se ma ulozit ukazatel na head - hlavu - prvniho clena seznamu
 * @param f proud (soubor), z niz se nac
 */
void vytvor(linkedList *z, FILE *f);

/**
 * Vypise seznam na terminal
 *
 * @param z adresa, z niz se bere anebo do niz se ma ulozit ukazatel na head - hlavu - prvniho clena seznamu
 */
void vypis(linkedList *z);

/**
 * Hleda v seznamu prvni vyskyt clena se zadanym obsahem datove polozky
 *
 * @param z adresa, z niz se bere anebo do niz se ma ulozit ukazatel na head - hlavu - prvniho clena seznamu
 * @param name - znakovy retezec, ktery se ma hledat v polozce name datove structury member
 * @return  ukazatel na nalezeneho clena; nenalezl-li se NULL
 */
linkedList hledej(linkedList *z, char *name);

// konec podprogramu zavislych na nasi konkretni definici clenu seznamu 

// zacatek podprogramu nezavislych na nasi konkretni definici clenu seznamu

/**
 * Prida do seznamu z prvek p pred clena seznamu r
 *
 * @param z adresa, z niz se bere anebo do niz se ma ulozit ukazatel na head - hlavu - prvniho clena seznamu
 * @param p  datova structura member
 * @param r  datova structura member
 */
void pridejpred(linkedList *z, linkedList p, linkedList r);

/**
 * Prida do seznamu z prvek p za clena seznamu r
 *
 * @param z adresa, z niz se bere anebo do niz se ma ulozit ukazatel na head - hlavu - prvniho clena seznamu
 * @param p  datova structura member
 * @param r  datova structura member
 */
void pridejza(linkedList *z, linkedList p, linkedList r);

/**
 * Vyjme ze seznamu z prvek clena seznamu r
 *
 * @param z adresa, z niz se bere anebo do niz se ma ulozit ukazatel na head - hlavu - prvniho clena seznamu
 * @param r  datova structura member
 */
void vyjmi(linkedList *z, linkedList r);

/**
 * Vymaze cely seznamu - i. e. vsechny jeho cleny
 *
 * @param z adresa, z niz se bere anebo do niz se ma ulozit ukazatel na head - hlavu - prvniho clena seznamu
 */
void vymaz(linkedList *z);


Neinspiruje se programy pro frontu (queue).
Inspirovat se můžete programy pro zásobník (stack) implementovaný ukazateli na struktury – je to spojový seznam s jen přidáváním na začátek a odebíráním ze začátku.
Nesmíte žonglovat s datovými položkami. Musíte jen přepojovat ukazatele.