Ocena użytkownikóww: ***** / 23
Nadesłany przez Michał Knasiecki, 29 lipca 2005 01:00
Kod przedstawiony poniżej przedstawia główną część rozwiązania problemu.
Pobierz pełne rozwiązanie.Jeżeli nie odpowiada Ci sposób formatowania kodu przez autora skorzystaj z pretty printer'a i dostosuj go automatycznie do siebie.
Stos.cpp:
/****************************************
* Implementacja stosu *
* www.algorytm.org *
* Opracował Michał Knasiecki *
*****************************************/
#include <conio.h>
#include <stdio.h>
#include <stdlib.h>
#include <iostream.h>
#include <string.h>
struct stos
{
char dane[10];
stos *ref;
};
stos *pointer = NULL;
stos *old = NULL;
void add_stack(char dodaj[10])
{
old=pointer;
pointer=new stos;
strcpy(pointer->dane,dodaj);
pointer->ref=old;
}
void delete_node(stos *node)
{
if (node!=NULL)
{
old=node->ref;
printf("Usunieto: %s\n",node->dane);
delete node;
pointer=old;
} else printf("Stos jest pusty\n");
}
void print_stack()
{
printf("Zawartosc stosu:\n");
old=pointer;
while (old!=NULL)
{
cout <<old->dane<<endl;
old=old->ref;
}
}
void delete_all(void)
{
old=pointer;
while (old!=NULL) delete_node(old);
printf("\nStos oczyszczony. Dowolny klawisz...");
}
int main(void)
{
char dane[10];
pointer=NULL;
printf("Wprowadz dane na stos (do 10 znakow, bez spacji):\n");
printf("# - usun ostatni, $ - wypisz dane, & - usun wszystko i zakoncz\n");
do
{
printf("Dane: ");
scanf("%s",dane);
if (strcmp(dane,"&")!=0)
if (strcmp(dane,"#")==0) delete_node(pointer); else
if (strcmp(dane,"$")==0) print_stack(); else add_stack(dane);
}
while (strcmp(dane,"&")!=0);
delete_all();
getch();
return 0;
}