ok już wrzucam mam nadzieję że uda ci się rozwikłać moją strukturę
// STRUKTURA STOS STRUKTURA STOS STRUKTURA STOS STRUKTURA STOS STRUKTURA STOS //
struct TStos { char text[21]; TStos *poprzedni; }; // wskaznik do danego elementu stosu czyli do jakiegos napisu // elementy stosu poprzednik
TStos *Wierzch, *p; // wskaznik do wierzchołka stosu i do elementu poprzedniego
FILE *we; char NP[81]="stos.txt"; // zmienne do otwierania pliku z którego będą pochodziły elementy stosu
int zPliku, n, nrw, nStosu, zn=0;
char BUF[21];
// Funkcje dodajace do stosu kolejne elementy //
void DodajDoStosu(char BUF[]) // dodawanie elementow poprzez wprowadzanie ich z klawiatury przez urzytkownika
{
int dl_nap_uz=0;
do
{
MessWin(4,1,4,80,6,0);
at(4,1); printf("podaj element do stosu: ");
gets(BUF);
dl_nap_uz=strlen(BUF);
} while(dl_nap_uz>20);
p=Wierzch;
Wierzch=new TStos;
strcpy(Wierzch->text,BUF);
Wierzch->poprzedni=p; nStosu++;
}
void DodajDoStosuu(char BUF[]) // dodawanie elementow z okreslonego pliku //
{
int dl_nap_uz=0;
nrw=0;
we = fopen("stos.dat", "rt");
do // zliczanie wierszy w pliku
{
nrw++;
fgets(BUF,20,we);
} while(!feof(we));
fclose(we);
we = fopen("stos.dat", "rt");
int i;
for(i=0;i<nrw;i++)
{
fgets(BUF,20,we);
p=Wierzch;
Wierzch=new TStos;
strcpy(Wierzch->text,BUF);
Wierzch->poprzedni=p; nStosu++; }fclose(we);
}
// Pasek statusu na dole ekranu na ktorym znajduje sie liczba nalozonych na stos elementow //
void Status(int nStosu)
{
at(24,1);textattr(16*GREEN+WHITE);printf("Liczba elementow polozonych na stos | ESC - wyjscie ");textattr(16*GREEN+RED);at(24,38); printf("%d",nStosu);
if(nStosu>18)
{
at(24,41);textattr(16*GREEN+YELLOW);putchar(25); printf(" przewin stos w dol");
}
textattr(16*GREEN+WHITE);
at(25,1);delline(); at(24,1);insline();MessWin(24,1,24,80,5,0);
}
// Funkcja wyswietlajaca stos na ekranie //
void PokazStos() // dla elementów wprowadzanych z klawiatury
{
if(Wierzch==NULL)
{MessWin(4,1,4,80,6,0); at(4,1); printf(" STOS PUSTY! "); return; }
else
{MessWin(4,1,4,80,5,0); p=Wierzch; int nrw=6; MessWin(nrw,1,nrw,80,5,0);
while(p!=NULL)
{ if(nrw>23)
{/* cos trzeba wstawic do wyswietlania stosu od poczatku z pliku*/; return; }
at(nrw,28); textattr(16*LIGHTBLUE+WHITE); printf("%5d: ",nStosu-nrw+6); printf(p->text);printf(" ");
p=p->poprzedni; nrw++; at(25,80); } // while
Status(nStosu);
}
}
// Funkcja wyswietlajaca stos na ekranie //
void PokazStosp() // dla elementów wprowadzanych z pliku
{
int i=1;
if(Wierzch==NULL)
{MessWin(4,1,4,80,6,0); at(4,1); printf(" STOS PUSTY! "); return; }
else
{MessWin(4,1,4,80,5,0); p=Wierzch; int nrw=6; MessWin(nrw,1,nrw,80,5,0);
while(p!=NULL)
{ if(nrw>23)
{/* cos trzeba wstawic do wyswietlania stosu od poczatku z pliku*/; return; }
for(i=0;i<1;i++)at(nrw,28); textattr(16*LIGHTBLUE+WHITE); printf("%5d: ",nStosu-nrw+6);i++; printf(p->text);printf(" ");
p=p->poprzedni; nrw++; at(25,80);Status(nStosu); } // while
}
}
// Usuwanie elementow stosu pojedynczo poprzez usuwanie wierzcholka stosu
void ZdejmijZeStosu()
{ p=Wierzch;
if (Wierzch!=NULL) { Wierzch=p->poprzedni; nStosu--; delete p; } }
// Usuwanie wszystkich elementow stosu // Czyszczenie Stosu //
void WyczyscStos()
{ p=Wierzch;
while(Wierzch!=NULL) { Wierzch=p->poprzedni; p=Wierzch; nStosu--; delete p;}
}