Data Structures පරිගණක ක්රමලේඛණයේදී නැතිවම බැරි කොටසකි. Data Structures කියන්නේ මූලික දත්ත ගබඩා කරන හා දත්ත සංවිධානය කරන ක්රමවේදයටයි. මේවාට උදාහරණ ලෙස.
- Array
- Bag
- Linked List
- Stack
- Queue
- Tree
- Graph
මෙම data Structures හි දත්ත මෙහෙය වන්න යොදාගන්නේ algorithm ය. Data Structures බොහෝ විට abstract data types (ADT) මත පදනම් වනවා. මෙම ADT වලදී පරිගණක මතක නිරූපණය හා කොහොමද ඒවා කියත්මක වන ආකාරය අදාළ වෙන්නේ නැහැ. මේක හරියට interface එකක් වගේ. උදාහරණයක් ගත්තොත් රියදුරා වාහනයක දන්නේ start කිරීම, break කිරීම, accelerate කිරීම, reverse කිරීම වගේ දේවල් ටිකක් විතරයි. මේවා ADT වලද උදාහරණ වේ. start කරද්දී වාහනය ඇතුලේ වන සම්පූර්ණ ක්රියාවලිය ඔහුට අදාළ වෙන්නේ නැහැ. අපි data Structures හි List ADT එක උදාහරණයකට ගත්තොත් එහි
- නව List එකක් නිර්මාණය කිරීම.
- තියෙන ලැයිස්තුව දත්ත ඇමිණීම
- ලැයිස්තුව දත්ත ඇතුළත් කිරීම
- ලැයිස්තුවෙන් දත්ත ඉවත් කිරීම
- ලැයිස්තුවෙන් දත්ත ඉවත් කිරීම
මෙම ADT මගින් data Structures අධ්යනය කර තමන්ගේ ක්රමලේඛයට සුදුසු data Structures ඉක්මණින් තිරණය කිරීම කළහැක.
Data Structures හි අවශ්යතාව
ක්රමලේඛණ වලට යොදා ගන්නා දිනෙන් දින භාවිතය වැඩිවන අතර ඒවායේ සංකීරණත්වය වැඩි වේ. එවිට නැගෙන ගැටලු කිහිපයක් පහත දැක්වේ.
Processor speed (සකසනයේ වේගය)
දිනෙන් දින දත්ත වැඩි වීමත් සමග දත්ත වල සිදුකරන සැකසීම් ප්රමාණය වැඩිවේ. අධික වශයෙන් දත්ත වැඩි වුනොත් සකසන අකර්මණ්ය වීම සිදුවිය හැක.
Data Search (දත්ත සෙවීම)
දත්ත 10 කින් එක් දත්තයක් සෙවීම ඉතා කෙටි කලකින් කළහැක. නමුත් දත්ත 10000 කින් එකක් සොයන්න කොච්චර කාලයක් යයිද.
Multiple requests
පරිශීලකයින් 1000 ක් එක විට search කළහොත් web server එක මත දී server එක අකර්මන්ය විය හැක.
එලෙස මෙවැනි ගැටලු වලට data Structures මගින් ලබා ගත හැක.
Data Structures හි වාසි
කාර්යක්ෂකමතාව (Efficiency)
කාර්යක්ෂමතාව ඔබ තෝරාගන්නා Data Structures එක මත තීරණය වේ.
යළි භාවිතය (Reusability)
Data Structures ඕනෑම තැනක ඕනෑම ක්රමලේඛයකට යොදි ගත හැක. එය එක් ක්රමලේඛයකට පමණක් අන්යනය වූවක් නොවේ.
ව්යුක්තිකරණය (Abstraction)
Data Structures, ADT තුළින් ලබා ගතහැකි නිසා implementation ගැන වදවීය යුතු නැහැ. ඒ කියන්නේ Structure එකට දත්ත දානවා නම් add() විතරයි ලියන්නේ add වෙන විදිහ අදාළ ම නැහැ.
ඔයලා Data Structures ගැන දන්න දේවල් තියෙනවා නම් ඒවා මෙහි කමෙන්ට් කරන්න.