Ocena użytkownikóww: ***** / 16
Nadesłany przez Michał Knasiecki, 01 sierpnia 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.
queue.cpp:
/****************************************
* Implementacja kolejki *
* www.algorytm.org *
* Opracował Michał Knasiecki *
*****************************************/
#include <conio.h>
#include <stdio.h>
#include <stdlib.h>
#include <iostream.h>
#include <string.h>
struct kolejka
{
char dane[10];
kolejka *ref;
};
kolejka *pointer;
kolejka *tmp;
kolejka *first; //wskaznik do pierwszego elementu kolejki
void add_queue(char dodaj[10])
{
tmp=new kolejka;
strcpy(tmp->dane,dodaj);
if (pointer==NULL) first=tmp; //ustawianie wkaznika do pierwszego elementu
else pointer->ref=tmp;
pointer=tmp;
}
void delete_node(void)
{
if (first!=NULL)
{
tmp=first->ref;
printf("Usunieto: %s\n",first->dane);
delete first;
first=tmp;
} else printf("Kolejka jest pusta\n");
}
void print_queue()
{
printf("Zawartosc kolejki:\n");
tmp=first;
while (tmp!=NULL)
{
cout <<tmp->dane<<endl;
tmp=tmp->ref;
}
}
void delete_all(void)
{
while (first!=NULL) delete_node();
printf("\nKolejka oczyszczona. Dowolny klawisz...");
}
void main(void)
{
char dane[10];
//
printf("Wprowadz dane do kolejki (do 10 znakow, bez spacji):\n");
printf("# - usun pierwszy, $ - wypisz dane, & - usun wszystko i zakoncz\n");
do
{
printf("Dane: ");
scanf("%s",dane);
if (strcmp(dane,"&")!=0)
if (strcmp(dane,"#")==0) delete_node(); else
if (strcmp(dane,"$")==0) print_queue(); else add_queue(dane);
}
while (strcmp(dane,"&")!=0);
delete_all();
getch();
}
Poprawcie mnie jak się myle