algorytm.org

Implementacja w Php



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?

Lista - Implementacja w Php
Ocena użytkownikóww: *****  / 1
SłabyŚwietny
Nadesłany przez Marek Rynarzewski, 04 sierpnia 2012 20:55
Kod przedstawiony poniżej przedstawia główną część rozwiązania problemu.
Pobierz pełne rozwiązanie.

lista.php:
<?php

//Implementacja listy z wartownikiem
//Marek Rynarzewski
//www.algorytm.org

	//Wartownik
	class Wartownik
	{
		//poprzednik
		public $prev;
		//nastepnik
		public $next;

		//Utworz wartownika
		public function __construct()
		{
			$this->prev = $this;
			$this->next = $this;
		}
	}

	//Element to wartownik rozszerzony o wartosc klucza
	class Element extends Wartownik
	{
		//klucz
		public $key;
	}

	//Lista z wartownikiem
	class ListaZWartownikiem
	{
		//wartownik
		public $wartownik;

		//rozmiar listy
		private $rozmiar = 0;

		//Utworz liste
		public function __construct()
		{
			$this->wartownik = new Wartownik;
		}

		//Utworz element o zadanej wartosci klucza
		static public function przypisz($wartosc)
		{
			$elem = new Element;
			$elem->key = $wartosc;
			return $elem;
		}

		//Wstaw nowa wartosc do listy
		public function wstawWartosc($wartosc)
		{
			$elem = ListaZWartownikiem::przypisz($wartosc);
			$this->wstawElement($elem);
		}

		//Wstaw nowy element do Marek Rynarzewski
		public function wstawElement(Element $elem)
		{
			$elem->next = $this->wartownik->next;
			$this->wartownik->next->prev = $elem;
			$this->wartownik->next = $elem;
			$elem->prev = $this->wartownik;
			$this->rozmiar++;
		}

		//Szukaj zadanej wartosci w liscie
		public function szukaj($wartosc)
		{
			$x = $this->wartownik->next;
			while ($x != $this->wartownik and $x->key != $wartosc)
				$x = $x -> next;

			if ($x != $this->wartownik)
				return $x;

			return NULL;
		}

		//Usuwa element z listy
		public function usun(Element $elem)
		{
			$elem->prev->next = $elem->next;
			$elem->next->prev = $elem->prev;
			$this->rozmiar --;
		}

		//Wykonaj funkcje dla n pierwszych elementow listy
		public function dlaNPierwszych($n, $funkcja)
		{
			$x = $this->wartownik->next;
			while ($n > 0 and $x != $this->wartownik)
			{
				$funkcja($x);
				$x = $x -> next;
				$n --;
			}
		}

		//Wykonaj funkcje dla wszystkich elementow listy
		public function dlaWszystkich($funkcja)
		{
			$x = $this->wartownik->next;
			while ($x != $this->wartownik)
			{
				$funkcja($x);
				$x = $x -> next;
			}
		}

		//Przekonwertuj liste na tablice
		public function toArray()
		{
			$tablica = array();
			$x = $this->wartownik->next;
			while ($x != $this->wartownik)
			{
				$tablica[] = $x->key;
				$x = $x -> next;
			}
			return $tablica;
		}
	}
?>
Dodaj komentarz