സ്റ്റാക്ക് (ഡാറ്റാ സ്ട്രക്‌ച്ചര്‍)

വിക്കിപീഡിയ, ഒരു സ്വതന്ത്ര വിജ്ഞാനകോശം.


Data stack.svg

അവസാനം ചേര്‍ക്കപ്പെടുന്ന അംഗങ്ങള്‍ ആദ്യം നീക്കം ചെയ്യപ്പെടുന്ന തരത്തിലുള്ള (LIFO : ലാസ്റ്റ്-ഇന്‍-ഫസ്റ്റ്-ഔട്ട്) ഒരു ഡാറ്റാ സ്ട്രക്‌ച്ചറാണ്‌ സ്റ്റാക്ക്. പുതിയ അംഗങ്ങളെ മുകള്‍ഭാഗത്ത് ചേര്‍ക്കുക (പുഷ്), നിലവിലുള്ള അംഗങ്ങളെ മുകള്‍ഭാഗത്തുനിന്ന് നീക്കുക (പോപ്) എന്ന രണ്ട് പ്രക്രിയകള്‍ മാത്രമേ സ്റ്റാക്കില്‍ അനുവദിനീയമായുള്ളൂ. ഒരു രേഖീയ ഡാറ്റാ സ്ട്രക്‌ച്ചറാണിത്.

[തിരുത്തുക] ഉപയോഗം

കം‌പ്യൂട്ടറുകളുമായി ബന്ധപ്പെട്ട് പല രംഗങ്ങളിലും ഉപയോഗിക്കപ്പെടുന്ന ഒരു ഡാറ്റാ സ്ട്രക്‌ച്ചറാണ്‌ ഇത് :

  • സംഖ്യകളടങ്ങിയ എക്സ്പ്രഷനുകളുടെ (ഉദാ : (1+2)*(4-3) ) വില കണ്ടുപിടിക്കാന്‍ ഉപയോഗിക്കുന്ന റിവേഴ്സ് പോളിഷ് നൊട്ടേഷന്‍ സ്റ്റാക്കുകള്‍ ഉപയോഗിക്കുന്നു
  • കമ്പൈലറുകള്‍ പ്രോഗ്രാമിലെ ഭാഗങ്ങളുടെ സിന്റാക്സ് മനസ്സിലാക്കുന്നതിനായി സ്റ്റാക്ക് ഉപയോഗിക്കുന്നു
  • സി, സി++ മുതലായ പ്രോഗ്രാമിംഗ് ഭാഷകളില്‍ ഫങ്ഷനുകളുമായി ബന്ധപ്പെട്ട ഡാറ്റ, പോയിന്ററുകള്‍ മുതലായവ സ്റ്റാക്കുകളിലാണ്‌ സൂക്ഷിക്കുന്നത്.

സ്റ്റാക്ക് ഉപയോഗിച്ച് പ്രോസസ്സിങ്ങ് നടത്തേണ്ടത് ആവശ്യമായുള്ള അല്‍ഗൊരിതങ്ങളൂണ്ട്. ഗ്രാഫുകളില്‍ ഉപയോഗിക്കുന്ന ഡെപ്ത് ഫസ്റ്റ് സര്‍ച്ച് ആണ്‌ ഒരുദാഹരണം. റികര്‍ഷന്‍ ഉപയോഗിച്ച് ചെയ്യേണ്ട കാര്യങ്ങള്‍ റികര്‍ഷന്‍ ഇല്ലാതെ നടത്താന്‍ സ്റ്റാക്ക് ഉപയോഗിക്കാം.

അറേകള്‍, ലിങ്ക്ഡ് ലിസ്റ്റുകള്‍ മുതലായവ ഉപയോഗിച്ച് സ്റ്റാക്കുകള്‍ നിര്‍മ്മിക്കാം.

[തിരുത്തുക] സി++ സ്റ്റാന്‍ഡേര്‍ഡ് ടെം‌പ്ലേറ്റ് ലൈബ്രറി

സി++ സ്റ്റാന്‍ഡേര്‍ഡ് ടെം‌പ്ലേറ്റ് ലൈബ്രറിയുടെ ഭാഗമായി സ്റ്റാക്ക് എന്ന ടെം‌പ്ലേറ്റ് ഉണ്ട്[1]. ഇത് ഒരു കണ്ടെയ്നര്‍ അഡാപ്റ്റര്‍ ആണ്‌. ഡെക്ക് ആണ്‌ ഇതിന്റെ അടിസ്ഥാനം. stack എന്ന ഹെഡര്‍ ഫയലിലാണ്‌ ഇത് നിര്‍വ്വചിക്കപ്പെട്ടിരിക്കുന്നത്. ഇതിലെ പ്രധാന ഫങ്ഷനുകള്‍ ഇവയാണ്‌:

  • void push(T&) : പുതിയ ഒരംഗത്തെ സ്റ്റാക്കിന്റെ മുകളിലേക്ക് ചേര്‍ക്കുക
  • void pop() : സ്റ്റാക്കിന്റെ മുകളിലത്തെ അംഗത്തെ നീക്കുക
  • T& top() : സ്റ്റാക്കിന്റെ മുകളിലത്തെ അംഗത്തെ റിട്ടേണ്‍ ചെയ്യുക
  • bool empty() : സ്റ്റാക്ക് ശൂന്യമാണോ അല്ലയോ എന്ന് പറയുക

[തിരുത്തുക] അവലംബം

  1. http://www.sgi.com/tech/stl/stack.html
താളിന്റെ അനുബന്ധങ്ങള്‍
ആശയവിനിമയം