|
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