𝗙𝗿𝗼𝗻𝘁𝗲𝗻𝗱 𝗟𝗶𝗻𝗲𝗮𝗿 𝗗𝗮𝘁𝗮 𝗦𝘁𝗿𝘂𝗰𝘁𝘂𝗿𝗲𝘀
લિનિયર ડેટા સ્ટ્રક્ચર્સ તત્વોને એક ક્રમમાં ગોઠવે છે. દરેક તત્વનું એક પૂર્વવર્તી (predecessor) અને એક અનુગામી (successor) હોય છે.
Arrays એરે (Arrays) JavaScript માં મુખ્ય સાધન છે. તેઓ સતત મેમરી (contiguous memory) નો ઉપયોગ કરે છે. આ તમને કોઈપણ તત્વને તેના ઇન્ડેક્સ દ્વારા તરત જ એક્સેસ કરવાની મંજૂરી આપે છે.
- push: અંતમાં એક તત્વ ઉમેરે છે.
- unshift: શરૂઆતમાં એક તત્વ ઉમેરે છે. આ ધીમું છે કારણ કે અન્ય દરેક તત્વને એક સ્થાન જમણી બાજુ ખસેડવું પડે છે.
- splice: કોઈપણ સ્થાન પર તત્વો ઉમેરે છે અથવા દૂર કરે છે. આ પદ્ધતિ મૂળ એરેને બદલી નાખે છે. તે પ્યોર ફંક્શન (pure function) નથી.
નોંધ: જ્યારે એરે ખૂબ મોટો થઈ જાય છે, ત્યારે JavaScript એ મોટી મેમરી બ્લોક ફાળવવી પડે છે અને બધું કોપી કરવું પડે છે. આનાથી પર્ફોર્મન્સ પર અસર પડે છે.
Stacks સ્ટેક (Stack) LIFO નિયમનું પાલન કરે છે: Last In, First Out. પ્લેટોના સ્ટેકની જેમ વિચારો. તમે ફક્ત ઉપરથી જ ઉમેરી અથવા દૂર કરી શકો છો.
- push: ઉપર ઉમેરો.
- pop: ઉપરથી દૂર કરો.
- peek: તત્વને દૂર કર્યા વિના ઉપરના તત્વને જુઓ.
Queues ક્યુ (Queue) FIFO નિયમનું પાલન કરે છે: First In, First Out. દુકાન પર લાગેલી લાઇન વિશે વિચારો.
- push: પાછળ ઉમેરો.
- shift: આગળથી દૂર કરો.
ચેતવણી: મોટા ડેટાસેટ્સ માટે એરે પર shift નો ઉપયોગ કરવો ધીમો છે. ખાલી જગ્યા ભરવા માટે દરેક તત્વને ડાબી બાજુ ખસેડવું પડે છે. વધુ પ્રમાણમાં ડેટા માટે, તેના બદલે લિંક્ડ લિસ્ટ (linked list) નો ઉપયોગ કરો.
Linked Lists લિંક્ડ લિસ્ટ (Linked list) નોડ્સ (nodes) થી બનેલું હોય છે. દરેક નોડમાં ડેટા અને પછીના નોડ તરફનો પોઇન્ટર (pointer) હોય છે.
- ફાયદા: એકવાર તમે યોગ્ય સ્થાન શોધી લો પછી નોડ્સ ઉમેરવા અથવા દૂર કરવા ઝડપી છે. તમારે ફક્ત પોઇન્ટર્સ બદલવાના હોય છે.
- ગેરફાયદા: તમે સીધા ઇન્ડેક્સ પર જઈ શકતા નથી. તમારે 'head' થી શરૂઆત કરવી પડે છે અને એક પછી એક પોઇન્ટર્સને અનુસરવા પડે છે. આ ધીમું છે.
Comparison Summary:
- Arrays: વારંવાર વાંચવા (reads) અને નાના ડેટા માટે શ્રેષ્ઠ છે. એક્સેસ O(1) છે.
- Linked Lists: વારંવાર લખવા (writes) અને મોટા ડેટા માટે શ્રેષ્ઠ છે. જો તમારી પાસે નોડ હોય તો ઇન્સર્શન (insertion) O(1) છે.
Pro Tips for JavaScript:
- એરેમાં ડેટા પ્રકારો (data types) મિક્સ કરશો નહીં. પ્રકારોને સમાન રાખવાથી એન્જિનને સતત મેમરી (contiguous memory) વાપરવામાં મદદ મળે છે.
- નંબર્સને સોર્ટ કરતી વખતે હંમેશા કમ્પેરિટર ફંક્શન (comparator function) નો ઉપયોગ કરો. [10, 2].sort() નું પરિણામ [10, 2] આવશે કારણ કે તે સ્ટ્રિંગ તરીકે સોર્ટ કરે છે.
- યાદ રાખો કે મોટાભાગના નેટિવ એરે મેથડ્સ મૂળ એરેમાં ફેરફાર (mutate) કરે છે.