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?

Kolejka - Implementacja w C/C++
Ocena użytkownikóww: *****  / 16
SłabyŚwietny
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();
}
Komentarze
photo
-1 # Damian1990 2011-05-27 08:19
Dlaczego wywala mi błąd podczas naciśnięcia Shift+4, aby zobaczyć wprowadzone dane?
Odpowiedz | Odpowiedz z cytatem | Cytować
photo
0 # Maniek 2012-12-15 23:42
Coś tu jest nie tak, bo np. przy wprowadzeniu nowych danych do kolejki, usunięciu ich wszystkich po kolei do wyzerowania, dalsze dodawanie nowych elementów jest niemożliwe, cały czas kolejka jest pusta.
Odpowiedz | Odpowiedz z cytatem | Cytować
photo
0 # adrianadf 2013-06-14 11:31
Przy dodwanieu elementu chyba jest błąd . A tak w ogóle to czemu ty nie masz wskaźnika do końca kolejki i masz na początek i do wierzchołka a to to samo.
Poprawcie mnie jak się myle
Odpowiedz | Odpowiedz z cytatem | Cytować
Dodaj komentarz