8. Posuvný register

8.1 Čo je to?

Posuvný register (shift register) je dynamická údajová štruktúra tvorená konštantným počtom lineárne zreťazených prvkov rovnakého typu, v ktorej sa obsah každého prvku môže presúvať do ľavého resp. do pravého suseda. Princíp „posúvania“ v registri s ôsmimi prvkami môžeme znázorniť takto (x je nový prvok):
 

 

 
Pri posune doľava sa na lineárnom zozname, ktorý predstavuje posuvný register, realizujú súčasne dve operácie:

  • Pridanie nového prvku na koniec
  • Odobratie prvku zo začiatku


Posuvný register pred posunom doľava:
 

„Zahodenie“ najľavejšieho prvku – odobratie prvku zo začiatku zoznamu:
 
p = z;
z = z->dalsi;
free((void*)p);

Pridanie nového prvku na koniec zoznamu:
 
q = (TPrvok*)malloc(sizeof(TPrvok));
k->dalsi = q;
q->dalsi = NULL;
k = q;
 

 
Posuvný register po posune:
 

Ak sa pri presune doľava (doprava) prenesie obsah najľavejšieho miesta do najpravejšieho (najpravejšieho do najľavejšieho) hovoríme o cyklickom posune doľava (doprava).