2010-10-01 17 views
8

ciao sono ancora uno studente e sono un po 'confuso sullo stacking e l'accodamento? prima domanda è,stack vs accodamento?

  1. qual è la diffrence principale tra loro due?

  2. btw c'è un accodamento circolare accanto alla normale coda, che ne dici? Come funzionano ? Esistono diversi modi per mettere in coda?

  3. im php, c'è un semplice codice di esempio (molto semplice o di facile lettura) su cui posso imparare (anche i collegamenti sono a posto)?

  4. c'è pop, push e così via (stacking e accodamento), c'è qualcosa di simile in php?

La ringrazio molto per guardare a.

+4

Apprezzo che tu sia uno studente, ma dovresti davvero essere in grado di cercare banalmente e trovare risposte a queste domande. –

+1

Cercare LIFO e FIFO. –

+1

@ pomeriggio - forse ce l'ha, ma ha già fatto più di 30 domande su StackOverflow, quindi deve fidarsi della qualità delle risposte fornite. – kevchadders

risposta

20

1: Mentre con pile le operazioni di inserimento/rimozione sia il lavoro sulla stessa estremità della struttura di dati (in alto)

con code l'inserimento avviene ad un'estremità (posteriore) e la rimozione all'altra estremità (anteriore).

(entrambe le immagini sono da rispettive voci wikipedia)

2: vedi http://en.wikipedia.org/wiki/Circular_buffer

3: e 4: vedi SplStack e SplQueue

+0

+1 per menzionare effettivamente i tipi di SPL appropriati – Gordon

+0

+1 .Grazie !!!. vediamo cosa dicono gli altri. –

3

Sembra che tu stia poter essere guidata verso la differenza tra le code first-in first-out e last-in first-out. Uno stack è il primo e una coda circolare è un'implementazione efficiente di quest'ultimo.

  1. Un stack è un LIFO (last in, first out) coda.

  2. È possibile avere un circular queue - questi erano i più comuni sui buffer dell'interfaccia di comunicazione poiché avevano una memoria limitata con dati in arrivo in modo asincrono e dati letti dalla CPU in momenti diversi.

  3. È possibile creare code in qualsiasi lingua se si conosce bene la lingua.

  4. Il php website offre molta documentazione.

2

A stack aggiunge e rimuove gli elementi dalla stessa estremità.

Un queue aggiunge elementi alla schiena e rimuove gli elementi dal fronte (come una linea in una banca.)

C'è un article about them both che spiega in dettaglio con esempi di codice.

A circular buffer A circular buffer ha uno spazio limitato e continua ad aggiungere elementi in modo circolare sovrascrivendo quelli alla fine.

7

in PHP si usa un array() per contenere i dati per entrambe le pile e code e utilizzare l'array_ * funzioni di manipolarli. Date un'occhiata a array functions at php.net

Hai

  • array_push - mettere un nuovo elemento alla fine dell'array
  • array_pop - rimuovere un elemento dalla fine della serie
  • array_shift - rimuovere un elemento fin dall'inizio della serie
  • array_unshift - inserisce un nuovo elemento all'inizio della matrice.

  • Per uno stack usereste array_push e array_pop

  • Per una coda usereste array_push e array_shift

un buffer circolare avrei implementare come un oggetto autonomo.