|
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);
seznam.h
.
Příslušné datové struktury postupně vkládejte do spojového seznamu.#include <stdio.h> #include <stdlib.h> #include "seznam.h" int main() { char fileName[32]; slovo mot; FILE *ff; linkedList spoSez, sx, sy; printf("Napiste jmeno souboru, z ktereho se ma cist, nebo slovo \"klavesnice\": "); fgets(fileName, 32, stdin); fileName[strlen(fileName) - 1] = '\0'; if (strcmp(fileName, "klavesnice")) { ff = fopen(fileName, "r"); } else { ff = stdin; } vytvor(&spoSez, ff); if (ff != stdin) { fclose(ff); } printf("\nVypis seznamu:\n"); vypis(&spoSez); printf("\nZadej, co se ma vyjmout: "); fgets(mot, TEXT_LENGTH, stdin); mot[strlen(mot) - 1] = '\0'; sx = hledej(&spoSez, mot); vyjmi(&spoSez, sx); free(sx); printf("Vypis seznamu:\n"); vypis(&spoSez); printf("\nZadej, za ktery clen seznamu se ma pridat novy prvek: "); fgets(mot, TEXT_LENGTH, stdin); mot[strlen(mot) - 1] = '\0'; sy = hledej(&spoSez, mot); printf("Zadej, co se ma pridat: "); sx = malloc(sizeof(member)); fgets(sx->name, TEXT_LENGTH, stdin); sx->name[strlen(sx->name) - 1] = '\0'; pridejza(&spoSez, sx, sy); printf("Vypis seznamu:\n"); vypis(&spoSez); printf("\nZadej, pred ktereho clena seznamu se ma pridat novy prvek: "); fgets(mot, 16, stdin); mot[strlen(mot) - 1] = '\0'; sy = hledej(&spoSez, mot); printf("Zadej, co se ma pridat: "); sx = malloc(sizeof(member)); fgets(sx->name, TEXT_LENGTH, stdin); sx->name[strlen(sx->name) - 1] = '\0'; pridejpred(&spoSez, sx, sy); printf("Vypis seznamu:\n"); vypis(&spoSez); printf("\nZadej, pred ktereho clena seznamu se ma pridat novy prvek: "); fgets(mot, 16, stdin); mot[strlen(mot) - 1] = '\0'; sy = hledej(&spoSez, mot); printf("Zadej, co se ma pridat: "); sx = malloc(sizeof(member)); fgets(sx->name, TEXT_LENGTH, stdin); sx->name[strlen(sx->name) - 1] = '\0'; pridejpred(&spoSez, sx, sy); printf("Vypis seznamu:\n"); vypis(&spoSez); vymaz(&spoSez); return 0; }
ablabla bafey candat dododo efraim fifi glogloglo haha