ಡೇಟಾ ಸ್ಟ್ರಕ್ಚರ್ಸ್

ವಿಕಿಪೀಡಿಯದಿಂದ, ಇದು ಉಚಿತ ವಿಶ್ವಕೋಶ
Jump to navigation Jump to search
ಡೇಟಾ ಸ್ಟ್ರಕ್ಚರ್
ಕಂಪ್ಯೂಟರ್ನಲ್ಲಿ ಇರುವ ಡೇಟಾನ ಪರಿಣಾಮಕಾರಿಯಾಗಿ ಬಳಸುವ ಸಾಧನೆ
ಉದಾಹರಣೆಗಳು
ಅರೆ
ಸ್ಟಾಕ್ ಮತ್ತು ಕ್ಯೂ
ಲಿಂಕ್ಡ ಲಿಸ್ಟ್
ಹೀಪ್

ಮುನ್ನುಡಿ[ಬದಲಾಯಿಸಿ]

ಡೇಟಾ ಸ್ಟ್ರಕ್ಚರ್ [೧] ಗಣಕ ವಿಜ್ಞಾನದ ಒಂದು ಮುಖ್ಯವಾದ ವಿಷಯ. ಇದು ಪ್ರೋಗ್ರಾಮಿಂಗ್ನಲ್ಲಿ [೨] ಪರಿಣತಿ ಪಡೆಯುವ ಎಲ್ಲಾ ವಿದ್ಯಾರ್ಥಿಗಳು ಕಲಿಯುವ ಮೂಲ ಪರಿಕಲ್ಪನೆ. ಈ ಲೇಖನದಲ್ಲಿ, ಡೇಟಾ ಸ್ಟ್ರಕ್ಚರ್ ವಿಷಯದ ಬಗ್ಗೆ ಒಂದು ಸಂಕ್ಷಿಪ್ತ ಅವಲೋಕನ ನೀಡಲಾಗಿದೆ

ಡೇಟಾ ಸ್ಟ್ರಕ್ಚರ್ ಎಂದರೇನು?[ಬದಲಾಯಿಸಿ]

ಸರಳ ಪದಗಳಲ್ಲಿ ಹೇಳಬೇಕಾದರೆ, ಡೇಟಾ ಸ್ಟ್ರಕ್ಚರ್, ಕಂಪ್ಯೂಟರ್ನಲ್ಲಿ ಇರುವ ಡೇಟಾನ [೩] ಪರಿಣಾಮಕಾರಿಯಾಗಿ ಬಳಸಲು ನಿರ್ದಿಷ್ಟ

ರಿೇತಿಯಲ್ಲಿ ಸಂಘಟಿಸುತ್ತದೆ.

ಡೇಟಾ ಸ್ಟ್ರಕ್ಚರ್ ವಿಧಗಳು[ಬದಲಾಯಿಸಿ]

ಅರೆ[೪][ಬದಲಾಯಿಸಿ]

ಕ್ಯೂನಲ್ಲಿ ಫಸ್ಟ್ ಇನ್, ಫಸ್ಟ್ ಔಟ್ ಚಿತ್ರಣ

ಇದು ಪ್ರೋಗ್ರಾಮಿಂಗ್ನಲ್ಲಿ ಸಾಮಾನ್ಯವಾಗಿ ಬಳಸುವ ಒಂದು ವಿಧವಾದ ಡೇಟಾ ಸ್ಟ್ರಕ್ಚರ್.ಇದು ರೇಖೀಯವಾದ ಡೇಟಾ ಸ್ಟ್ರಕ್ಚರ್ [೫]. ಇದರಲ್ಲಿ ಏಕರೂಪದ ಅಂಶಗಳನ್ನು [೬] ಕ್ರಮಾನುಬದ್ಧವಾದ​ ಸ್ಥಳಗಳಲ್ಲಿ ಸಂಗ್ರಹಿಸಲಾಗುತದೆ. ಈ ಅಂಶಗಳು ಪದ, ಸಂಖ್ಯೆ ಮುಂತಾದ ಡೇಟಾ ಆಗಿರಬಹುದು

ಸ್ಟಾಕ್ನಲ್ಲಿ ಲಾಸ್ಟ್ ಇನ್ ಫಸ್ಟ್ ಔಟ್“ಚಿತ್ರಣ

ಸ್ಟಾಕ್ ಮತ್ತು ಕ್ಯೂ[೭] [೮][ಬದಲಾಯಿಸಿ]

ಡೇಟಾ ಸಂಗ್ರಹಿಸಲು ಒಂದು ವ್ಯವಸ್ಥಿತ ಕ್ರಮವನ್ನು ಪಾಲಿಸಬೆಕಾದರೆ ಸ್ಟಾಕ್ ಮತ್ತು ಕ್ಯೂ ಬಳಸಬಹುದು. ಸ್ಟಾಕ್ ನಿಂದ ಫಂಕ್ಟ್ಷನ್[೯] ಕರೆಗಲನ್ನು ನಿರ್ವಹಿಸಬಹುದು ಹಾಗು ಕ್ಯೂ ಎಂಬ ಅಮೂರ್ತ ಡೇಟಾ ಪ್ರಕಾರದಿಂದ, [೧೦]ಡೇಟಾದ ವ್ಯವಸ್ಥಿತ​ ಕ್ರಮವನ್ನು ಪಾಲಿಸಬಹುದು.

ಸ್ಟಾಕ್ ಮತ್ತು ಕ್ಯೂಗಳ ನಡುವೆ ಇರುವ ವ್ಯತ್ಯಾಸವೇನಂದರೆ, ಸ್ಟಾಕ್ ಗಳಲ್ಲಿ  ಸಂಗ್ರಹಿಸಿದ ಡೇಟಾ ವಿಶ್ಲೇಷಣೆ ಮಾಡಲು “ಲಾಸ್ಟ್ ಇನ್, ಫಸ್ಟ್ ಔಟ್“ [೧೧] ತತ್ವವನ್ನು ಪಾಲಿಸಲಾಗುತ್ತದೆ.  ಆದರೆ ಕ್ಯೂಗಳಲ್ಲಿ “ಫಸ್ಟ್ ಇನ್, ಫಸ್ಟ್ ಔಟ್ “ [೧೨] [೧೩]ತತ್ವವನ್ನು ಪಾಲಿಸಲಾಗುತ್ತದೆ.



ಲಿಂಕ್ಡ ಲಿಸ್ಟ್[೧೪][ಬದಲಾಯಿಸಿ]

ಲಿಂಕ್ಡ ಲಿಸ್ಟ್


ಇದು ಕೂಡ ಸಾಮಾನ್ಯವಗಿ ಬಳಸುವ ಒಂದು ರೇಖೀಯವಾದ ಡೇಟಾ ಸ್ಟ್ರಕ್ಚರ್. ಆದರೆ ಇದರಲ್ಲಿ ಪ್ರತಿಯೊಂದು ಅಂಶವನ್ನು  ವಿಭಿನ್ನವಾದ ಆಬ್ಜೆಕ್ಟ [೧೫]ಎಂದು ಪರಿಗಣಿಸಲಾಗುತದೆ. ಅದನ್ನು ನೋಡ್ [೧೬] ಎಂದು ಕರಯಲಾಗುತದೆ. ಪ್ರತಿಯೊಂದು ನೋಡಿನಲ್ಲು ಅದರ ಮೌಲ್ಯ [೧೭] ಹಾಗು ಮುಂದಿನ ನೋಡಿನ ಉಲ್ಲೇಖವನ್ನು [೧೮]ಇರಿಸಿಕೊಳ್ಳಲಾಗುತ್ತದೆ. ಲಿಂಕ್ಡ ಲಿಸ್ಟ್ ಲ್ಲಿ ಎರಡು ವಿದಾನಗಳಿವೆ. “ಡಬ್ಲಿ ಲಿಂಕ್ಡ ಲಿಸ್ಟ್“ಮತ್ತು ಸಕು೯ಲರ್ ಲಿಂಕ್ಡ ಲಿಸ್ಟ್” [೧೯] [೨೦]

ಬೈನರಿ ಟ್ರೀ[೨೧][ಬದಲಾಯಿಸಿ]

ಇವು ಕ್ರಮಾನುಗತವಾದ ಡೇಟಾ ಸ್ಟ್ರಕ್ಚರ್. ಬೈನರಿ ಟ್ರೀ ಡೇಟಾ ಸ್ಟ್ರಕ್ಚರ್ ನಲ್ಲಿ ಪ್ರತಿಯೊಂದು ನೋಡಿಗು ಎರಡು ಚೈಲ್ಡ್ ನೋಡ್ [೨೨]ಇರುತ್ತದೆ. ಅದನ್ನು ಲೆಫ್ಟ್ ಚೈಲ್ಡ್ ಮತ್ತು ರೈಟ್ ಚೈಲ್ಡ್ ಎಂದು ಕರೆಯಲಾಗುತ್ತದೆ.. ಟ್ರೀ ಯನ್ನು ಮೇಲ್ಬಾಗದ​  ನೋಡಿನ ಪಾಯಿಂಟರ್  ಇಂದ ವಣಿ೯ಸಲಾಗುತ್ತದೆ. ಟ್ರೀ ಖಾಲಿ ಇದ್ದಾಗ ಅದರ ರೂಟ್ ಇನ ಮೌಲ್ಯ ಶೊನ್ಯ ವಾಗಿರುತ್ತದೆ.

ಬೈನರಿ ಟ್ರೀ ಗಳಲ್ಲಿ ಕೆಳಗೆ ಕಂಡ ಭಾಗಗಲಿರುತ್ತವೆ

  1. ಡೇಟಾಮುನ್ನುಡಿ
  2. ಲೆಫ್ಟ್ ಚೈಲ್ಡ್ ಇನ​ ಪಾಯಿಂಟರ್
  3. ಮುನ್ನುಡಿರೈಟ್ ಚೈಲ್ಡ್ ಇನ​ ಪಾಯಿಂಟರ್
ಮುನ್ನುಡಿಬೈನರಿ ಟ್ರೀ



ಬೈನರಿ ಟ್ರೀ ಅನ್ನು ಪರಿಶೇಲಿಸಲು ಎರಡು ವಿಧಾನಗಲಿವೆ [೨೩]

ಡೆಪ್ತ ಫಸ್ಟ್ ಟ್ರಾವಸ೯ಲ್ [೨೪] ( ಆಳದ ಅನುಸಾರ )  - ಇದರಲ್ಲಿ ಮೂರು ವಿದಾನಗಲಿವೆ[ಬದಲಾಯಿಸಿ]

  1. ಇನ್ ಆಡ೯ರ್ ಟ್ರಾವಸ೯ಲ್: ಇದರಲ್ಲಿ ಮೊದಲು ಎಡ ಸಬ್ ಟ್ರೀ, ನಂತರ ರೂಟ್, ಅದರ ನಂತರ ಬಲ ಸಬ್ ಟ್ರೀ ಟ್ರಾವಸ ಮಾದಲಾಗುತ್ತದೆ [೨೫]
  2. ಪ್ರಿ ಆಡ೯ರ್ ಟ್ರಾವಸ೯ಲ್: ಇದರಲ್ಲಿ ಮೊದಲು ರೂಟ್, ನಂತರ ಎಡ ಸಬ್ ಟ್ರೀ ಅದರ ನಂತರ ಬಲ ಸಬ್ ಟ್ರೀ ಟ್ರಾವಸ೯ ಮಾದಲಾಗುತ್ತದೆ [೨೬]
  3. ಪೋಸ್ಟ ಆಡ೯ರ್ ಟ್ರಾವಸ೯ಲ್: ಇದರಲ್ಲಿ ಮೊದಲು ಎಡ ಸಬ್ ಟ್ರೀ ನಂತರ ಬಲ ಸಬ್ ಟ್ರೀ ಅದರ ನಂತರ ರೂಟ್ ಟ್ರಾವಸ೯ ಮಾದಲಾಗುತ್ತದೆ [೨೭]
ಡೆಪ್ತ ಫಸ್ಟ್ ಟ್ರಾವಸ೯ಲ್





ಬ್ರೆಡ್ತ ಫಸ್ಟ್ ಟ್ರಾವಸ೯ಲ್ [೨೮] (ಅಗಲದ ಅನುಸಾರ) - ಇದನ್ನು ಲೆವಲ್ ಆಡ೯ರ್ ಟ್ರಾವಸ೯ಲ್ ಅನ್ನುತಾರೆ[ಬದಲಾಯಿಸಿ]

ಬ್ರೆಡ್ತ ಫಸ್ಟ್ ಟ್ರಾವಸ೯ಲ್

ಇದು ಟ್ರೀ ಮತ್ತು ಗ್ರಾಫ್ ಡೇಟಾ ಸ್ಟ್ರಕ್ಚರನ್ನು ಹುಡುಕುವ ಅಲ್ಗಾರಿದಮ್ ಆಗಿದೆ. ಇದು ವಟಿ೯ಸಿಸ್ ಗಳ ನಡುವೆ ಕಡಿಮೆಯಾದ ಮರ್ಗವನ್ನು ಹುಡುಕಲು ಬಳಸಲಾಗುತ್ತದೆ. ಈ . ಅಲ್ಗಾರಿದಮ್ ಒಂದು ಮಟ್ಟದಿಂದ ಇನ್ನೊಂದು ಮಟ್ಟವನ್ನು ಹುಡುಕುತ್ತದೆ.








ಬೈನರಿ ಸಚ್೯ ಟ್ರೀ[ಬದಲಾಯಿಸಿ]

ಇದು ಬೈನರಿ ಟ್ರೀಯ ಒಂದು ವ್ಯತ್ಯಯನ. ಇದರ ವೈಶಿಷ್ಟ್ಯಗಳು ಏನೆಂದರೆ [೨೯]

  1. ನೋಡಿನ ಎಡದ ಸಬ್ ಟ್ರೀ ಗಳಲ್ಲಿ, ನೋಡಿನ ಕೀ ಗಿಂತ ಕಡಿಮೆ ಕೀಗಳು ಇರುತ್ತವೆ
  2. ನೋಡಿನ ಬಲದ ಸಬ್ ಟ್ರೀ ಗಳಲ್ಲಿ, ನೋಡಿನ ಕೀ ಗಿಂತ ಅಧಿಕ ಕೀಗಳು ಇರುತ್ತವೆ
  3. ಎಡ ಮತ್ತು ಬಲದ ಸಬ್ ಟ್ರೀ ಗಳು ಬೈನರಿ ಸಚ್೯ ಟ್ರೀ ಗಳು ಆಗಿರುತ್ತವೆ


ಹೀಪ್[ಬದಲಾಯಿಸಿ]

ಹೀಪ್ ಟ್ರೀ ಆಧಾರಿತ​ಡೇಟಾ ಸ್ಟ್ರಕ್ಚರ್.[೩೦] ಇದು ಪೂಣ೯ವಾದ ಬೈನರಿ ಟ್ರೀ.ಹೀಪ್ ಡೇಟಾ ಸ್ಟ್ರಕ್ಚರ್ ಬಳಸಿ ಕಂಪ್ಯೂಟರ್ಪ್ರೋಗ್ರಾಮಿಂಗ್ನಲ್ಲಿ ಬರುವಂತಹ ಅನೇಕ​ ಸಮಸ್ಯೆ ಗಳನ್ನು ಪರಿಹಾರಿಸಬಹುದು


ಹೀಪ್ ಗಳಲ್ಲಿ ಎರಡು ವಿಧಗಳಿವೆ – ಮಿನ್ ಹೀಪ್ ಮತ್ತು ಮ್ಯಾಕ್ಸ ಹೀಪ್

ಮಿನ್ ಹೀಪ್
ಮ್ಯಾಕ್ಸ ಹೀಪ್
  1.   ಮಿನ್ ಹೀಪ್ – ಈ ಡೇಟಾ ಸ್ಟ್ರಕ್ಚರ್ ನಲ್ಲಿ, ರೂಟ್ ನೋಡಿನ ಮೌಲ್ಯ ಚೈಲ್ಡ್ ನೋಡಿನ ಮೌಲ್ಯಮುನ್ನುಡಿ ಕ್ಕಿಂತ ಕಡಿಮೆ ಅಥವಾ ಸಮಾನವಾಗಿರುತ್ತದೆ [೩೧]
  2.  ಮ್ಯಾಕ್ಸ ಹೀಪ್- ಈ ಡೇಟಾ ಸ್ಟ್ರಕ್ಚರ್ ನಲ್ಲಿ, ರೂಟ್ ನೋಡಿನ ಮೌಲ್ಯ ಚೈಲ್ಡ್ ನೋಡಿನ ಮೌಲ್ಯ ಕ್ಕಿಂತ ಅಧಿಕ ಅಥವಾ ಸಮಾನವಾಗಿರುತ್ತದೆ [೩೨]





ಗ್ರಾಫ್[೩೩][ಬದಲಾಯಿಸಿ]

ನೈಜ-ಜೀವನದ ಸಮಸ್ಯೆಗಳನ್ನು ಪರಿಹರಿಸಲು ಗ್ರಾಫ್‌ಗಳನ್ನು ಬಳಸಲಾಗುತ್ತದೆ. ಅದು ಸಮಸ್ಯೆಗಳನ್ನ ನೆಟ್‌ವರ್ಕ್‌ನಂತೆ ಪ್ರತಿನಿಧಿಸುತ್ತದೆ.ಉದಾಹರಣೆಗೆ, ಟೆಲಿಫೋನ್ ನೆಟ್ವರ್ಕ್ಗಳು,ಸರ್ಕ್ಯೂಟ್ ನೆಟ್ವರ್ಕ್ಗಳು,ಸಾಮಾಜಿಕ ನೆಟ್ವರ್ಕ್ಗಳು ​​(ಲಿಂಕ್ಡ್ಇನ್,ಫೇಸ್ಬುಕ್) ಇತ್ಯಾದಿಗಳನ್ನು ಗ್ರಾಫ್ ಮೂಲಕ ನಿರ್ಮಿಸಬಹುದು. ಫೇಸ್ ಬುಕ್ ನೆಟ್ವಕಿ೯ನಲ್ಲಿ ಪ್ರತಿಯೂಂದು ವ್ಯಕ್ತಿಯನ್ನು ನೋಡ್ ನಿಂದ ಪ್ರತಿನಿಧಿಸಲಾಗುತ್ತ ದೆ. ಪ್ರತಿ ನೋಡ್ ಒಂದು ಸ್ಟ್ರಕ್ಚರ್ ಆಗಿದ್ದು, ಅದರಲ್ಲಿ ಆ ವ್ಯಕ್ತಿ ಯ ಹೆಸರು, ಲಿಂಗ, ಸ್ಥಳ ಮು೦ತಾದ ​ವಿವರಗಳು ಇರುತ್ತವೆ.

ಸಮಾರೋಪ[ಬದಲಾಯಿಸಿ]

ಪ್ರೋಗ್ರಾಮಿಂಗ್ನಲ್ಲಿ, ಈ ಮೇಲ್ಕ೦ಡ ಡೇಟಾ ಸ್ಟ್ರಕ್ಚರ್ಗಳು ಅಲ್ಲದೆ ಹಲಾವಾರು ಬೇರೆ ಡೇಟಾ ಸ್ಟ್ರಕ್ಚರ್ಗಳನ್ನೂ ಉಪಯೋಗಿಸಬಹುದು. ಉದಾಹರಣೆಗೆ, ಟ್ರೈ [೩೪], ಸೆಗ್ಮೆಂಟ್ ಟ್ರೀ [೩೫], ಸೆಟ್ [೩೬] ಇತ್ಯಾದಿ

ಡೇಟಾ ಸ್ಟ್ರಕ್ಚರ್ ಗಣಕಯಂತ್ರ ವಿಜ್ಞಾನದ ಪ್ರೋಗ್ರಾಮಿಂಗ್ನಲ್ಲಿ ಒಂದು ಅತ್ಯಂತ ಮುಖ್ಯವಾದ ಸಾಧನೆ ಆಗಿದೆ. ಸೂಕ್ತವಾದ ಡೇಟಾ ಸ್ಟ್ರಕ್ಚರ್ ಆಯ್ಕೆಯು ಕಂಪ್ಯೂಟರ್ ಗೆ  ಡೇಟಾ ಸಂಗ್ರಹಿಸಲು ಮತ್ತು ಹಿಂಪಡೆಯಲು ಸಹಾಯ ಮಾಡುತ್ತದೆ. ಆದ್ದರಿಂದ, ದಕ್ಷ ಅಲ್ಗಾರಿದಮ್ [೩೭] ಗಳನ್ನು ವಿನ್ಯಾಸಗೊಳಿಸಲು ಸಮರ್ಥ ಡೇಟಾ ಸ್ಟ್ರಕ್ಚರ್ಗಳು ಬಹಳ ಅವಶ್ಯಕ.


ಉಲ್ಲೇಖಗಳು[ಬದಲಾಯಿಸಿ]

  1. https://www.geeksforgeeks.org/data-structures/
  2. https://hackr.io/blog/what-is-programming
  3. https://en.wikipedia.org/wiki/Data
  4. https://www.geeksforgeeks.org/introduction-to-arrays/
  5. https://codeandwork.github.io/courses/java/linearDataStructures.html
  6. https://www.pcmag.com/encyclopedia/term/data-element
  7. https://www.geeksforgeeks.org/stack-data-structure/
  8. https://www.geeksforgeeks.org/queue-data-structure/
  9. https://www.google.com/search?client=firefox-b-d&q=function
  10. https://en.wikipedia.org/wiki/Abstract_data_type
  11. https://www.geeksforgeeks.org/lifo-last-in-first-out-approach-in-programming/
  12. https://en.wikipedia.org/wiki/FIFO_(computing_and_electronics)
  13. https://www.geeksforgeeks.org/fifo-vs-lifo-approach-in-programming/
  14. https://www.cs.cmu.edu/~adamchik/15-121/lectures/Linked%20Lists/linked%20lists.html
  15. https://www.w3schools.com/cs/cs_classes.asp
  16. https://en.wikipedia.org/wiki/Node_(computer_science)
  17. https://en.wikipedia.org/wiki/Value_(computer_science)
  18. https://en.wikipedia.org/wiki/Reference_(computer_science)
  19. https://www.studytonight.com/data-structures/doubly-linked-list
  20. https://www.geeksforgeeks.org/circular-linked-list/
  21. https://www.studytonight.com/data-structures/introduction-to-binary-trees
  22. https://www.freecodecamp.org/news/all-you-need-to-know-about-tree-data-structures-bceacb85490c/
  23. https://www.geeksforgeeks.org/difference-between-bfs-and-dfs/
  24. https://www.geeksforgeeks.org/depth-first-search-or-dfs-for-a-graph/
  25. https://www.geeksforgeeks.org/inorder-tree-traversal-without-recursion/
  26. https://www.youtube.com/watch?v=WmkbxTWCSoc
  27. https://www.geeksforgeeks.org/iterative-postorder-traversal/
  28. https://www.geeksforgeeks.org/breadth-first-search-or-bfs-for-a-graph/
  29. https://www.geeksforgeeks.org/binary-search-tree-set-1-search-and-insertion/
  30. https://www.geeksforgeeks.org/heap-data-structure/
  31. https://www.geeksforgeeks.org/min-heap-in-java/
  32. https://www.geeksforgeeks.org/max-heap-in-java/
  33. https://www.geeksforgeeks.org/graph-data-structure-and-algorithms/
  34. https://www.geeksforgeeks.org/trie-insert-and-search
  35. https://www.geeksforgeeks.org/segment-tree-set-1-sum-of-given-range
  36. https://en.wikipedia.org/wiki/Set_(abstract_data_type)
  37. https://en.wikipedia.org/wiki/Algorithm