algorytm.org

Implementacja w C/C++



Baza Wiedzy
wersja offline serwisu przeznaczona na urządzenia z systemem Android
Darowizny
darowiznaWspomóż rozwój serwisu
Nagłówki RSS
Artykuły
Implementacje
Komentarze
Forum
Bookmarki






Sonda
Implementacji w jakim języku programowania poszukujesz?

Stos - Implementacja w C/C++
Ocena użytkownikóww: *****  / 23
SłabyŚwietny
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;
}
Dodaj komentarz