സ്റ്റാക്ക് (ഡാറ്റാ സ്ട്രക്ച്ചർ)
അവസാനം ചേർക്കപ്പെടുന്ന അംഗങ്ങൾ ആദ്യം നീക്കം ചെയ്യപ്പെടുന്ന തരത്തിലുള്ള (LIFO : ലാസ്റ്റ്-ഇൻ-ഫസ്റ്റ്-ഔട്ട്) ഒരു ഡാറ്റാ സ്ട്രക്ച്ചറാണ് സ്റ്റാക്ക്. പുതിയ അംഗങ്ങളെ മുകൾഭാഗത്ത് ചേർക്കുക (പുഷ്), നിലവിലുള്ള അംഗങ്ങളെ മുകൾഭാഗത്തുനിന്ന് നീക്കുക (പോപ്) എന്ന രണ്ട് പ്രക്രിയകൾ മാത്രമേ സ്റ്റാക്കിൽ അനുവദിനീയമായുള്ളൂ. ഒരു രേഖീയ ഡാറ്റാ സ്ട്രക്ച്ചറാണിത്.
ഉപയോഗം
തിരുത്തുകകംപ്യൂട്ടറുകളുമായി ബന്ധപ്പെട്ട് പല രംഗങ്ങളിലും ഉപയോഗിക്കപ്പെടുന്ന ഒരു ഡാറ്റാ സ്ട്രക്ച്ചറാണ് ഇത് :
- സംഖ്യകളടങ്ങിയ എക്സ്പ്രഷനുകളുടെ (ഉദാ : (1+2)*(4-3) ) വില കണ്ടുപിടിക്കാൻ ഉപയോഗിക്കുന്ന റിവേഴ്സ് പോളിഷ് നൊട്ടേഷൻ സ്റ്റാക്കുകൾ ഉപയോഗിക്കുന്നു
- കമ്പൈലറുകൾ പ്രോഗ്രാമിലെ ഭാഗങ്ങളുടെ സിന്റാക്സ് മനസ്സിലാക്കുന്നതിനായി സ്റ്റാക്ക് ഉപയോഗിക്കുന്നു
- സി, സി++ മുതലായ പ്രോഗ്രാമിംഗ് ഭാഷകളിൽ ഫങ്ഷനുകളുമായി ബന്ധപ്പെട്ട ഡാറ്റ, പോയിന്ററുകൾ മുതലായവ സ്റ്റാക്കുകളിലാണ് സൂക്ഷിക്കുന്നത്.
സ്റ്റാക്ക് ഉപയോഗിച്ച് പ്രോസസ്സിങ്ങ് നടത്തേണ്ടത് ആവശ്യമായുള്ള അൽഗൊരിതങ്ങളൂണ്ട്. ഗ്രാഫുകളിൽ ഉപയോഗിക്കുന്ന ഡെപ്ത് ഫസ്റ്റ് സർച്ച് ആണ് ഒരുദാഹരണം. റികർഷൻ ഉപയോഗിച്ച് ചെയ്യേണ്ട കാര്യങ്ങൾ റികർഷൻ ഇല്ലാതെ നടത്താൻ സ്റ്റാക്ക് ഉപയോഗിക്കാം.
അറേകൾ, ലിങ്ക്ഡ് ലിസ്റ്റുകൾ മുതലായവ ഉപയോഗിച്ച് സ്റ്റാക്കുകൾ നിർമ്മിക്കാം.
സി++ സ്റ്റാൻഡേർഡ് ടെംപ്ലേറ്റ് ലൈബ്രറി
തിരുത്തുകസി++ സ്റ്റാൻഡേർഡ് ടെംപ്ലേറ്റ് ലൈബ്രറിയുടെ ഭാഗമായി സ്റ്റാക്ക് എന്ന ടെംപ്ലേറ്റ് ഉണ്ട്[1]. ഇത് ഒരു കണ്ടെയ്നർ അഡാപ്റ്റർ ആണ്. ഡെക്ക് ആണ് ഇതിന്റെ അടിസ്ഥാനം. stack എന്ന ഹെഡർ ഫയലിലാണ് ഇത് നിർവ്വചിക്കപ്പെട്ടിരിക്കുന്നത്. ഇതിലെ പ്രധാന ഫങ്ഷനുകൾ ഇവയാണ്:
- void push(T&) : പുതിയ ഒരംഗത്തെ സ്റ്റാക്കിന്റെ മുകളിലേക്ക് ചേർക്കുക
- void pop() : സ്റ്റാക്കിന്റെ മുകളിലത്തെ അംഗത്തെ നീക്കുക
- T& top() : സ്റ്റാക്കിന്റെ മുകളിലത്തെ അംഗത്തെ റിട്ടേൺ ചെയ്യുക
- bool empty() : സ്റ്റാക്ക് ശൂന്യമാണോ അല്ലയോ എന്ന് പറയുക