Wednesday, November 14, 2018

JAVA වලින් Linked List එකක් හදාගමු.


ඉතින් යාලුවනේ මම හේෂාන් ලහිරු එක්ක එකතු වෙලා මමත් මේ blog එකට ලියන්න හිතුව. මේක මගේ පලවෙනි article එක හින්ද පොඩි පොඩි අඩුපාඩු කම් තියේවි මුලින්ම එකට සමාව ඉල්ලනවා.

ඉතින් අද මං කතා කරන්න හිතුවේ Linked List ගැන. මොකක්ද මේ Linked List කියන්නේ කියල බලමු. Linked List කියන්නෙත් අපිට programming වලදී ලේසියෙන්ම පාවිච්චි කරන්න පුළුවන් තවත් එක Data Structure එකක් එකත් හරියට අපි හැමොම දන්න Array එකක් වගේ. ඒත් ඇයි Array තියෙද්දී තවත් Linked List කියල Data Structure එකක් ගැන අපි කතා කරන්න යන්නේ කියල මං ඔයාලට පැහැදිලි කරන්නම්.


මම කිව්වා වගේ Linked List සහ Array කියන Data Structures දෙක  Data Store කරන්න පාවිච්චි කරන්න පුළුවන් එත් ඒ දෙක අතරේ සමහර වෙනස් කම් තියෙනව.මේ වෙනස් කම් මත  සමහර programs වලට Array  පාවිච්චි කරනවද නැත්තම් Linked List කරනවද කියන දේ රදා පවතිනවා. දැන් බලමු මොනවද Linked List සහ Array අතරේ තියෙන වෙනස් කම් කියල.

  •  තියෙන පලවෙනි වෙනස් කම තමයි Array වල Elements ගාන අපිට මුලදීම කියන්න වෙනවා සහ අපිට ඒ කියපු Elements ගණනට  වඩා වැඩි Elements ගණනක් Array එකට දාන්න බැහැ.එත් අපි Linked List පාවිච්චි කරනවානම් අපිට මුලදී Elements ගණන කියන්න ඕනේ නැහැ වගේම අපිට Linked List එකට අවශ්‍ය විදියට ඕන වේලාවකදී අලුත් Elements Add කරන්න පුළුවන්.
  •  අනිත් මුලිකම වෙනස තමයි Array එකක Elements අපිට Random Access කරන්න පුළුවන්.එත් Linked List පාවිච්චි කරනවනම් අපිට Elements පාවිච්චි කරන්න වෙන්නේ වෙනස් විදියකට මං ඒ  විදිය කියල දෙනව මේ article එකේදී.හොදට මතක තියාගන්න Linked List වල අපිට දකින්න පුළුවන් ලොකුම අවාසිය එක තමයි  අපිට Linked List Elements Random Access කරන්න බැහැ .
අපි දැන් බලමු Linked List එකක features මොනවද කියල.මං එක පැහැදිලි කරන්න Images පවීච්චි කරන්නම්. Linked List Element එකක් අපි හදුන්වන්නේ Node එකක් කියල.

Node එකකට ප්‍රධාන කොටස් දෙකක් තියෙනව
      1.  Data :- මේකෙන් වෙන්නේ ඒ අදාළ Node එකේ value තියාගෙන ඉන්න එක.
      2.  Next එකෙන් කරන්නේ  Linked List එකේ ඊළගට ඉන්න Node එකේ  Location එක මතක තියාගෙන ඉන්න එක අපිට කොයි වෙලාවක හරි මොකක් හරි Node එකක  value එක පාවිච්චි කරන්න ඕනේ නම් අපිට සිද්ද වෙනවා පලවෙනි Node එකේ ඉදල පිලිවෙලවට අපිට ඕන කරන
        Node දක්වා එන්න .අන්න එහෙම එන්න ඕන කරන memory address එක තමයි next කියන variable එක තියාගෙන ඉන්නේ.

Linked List එකේ පලවෙනි Node එක අපි හදුන්වන්නෙ Head එක කියල.අන්තිම එක අපි  Tail එක කියල හදුන්වනවා.මං කලින් කිව්වනේ Linked List  Access කරන විදිය Array Access කරන විදියට වඩා වෙනස් කියල ඒ කියපු  වෙනස තමයි අපිට Linked List එකේ ඕනෑම Node එකක් Access කරන්න ඕනේ නම් අපිට සිද්ද වෙනවා අනිවාර්යෙන්ම පලවෙනි Node එක එහෙම නැත්තම් Head එකේ ඉදල පිළිවෙලට අදාළ Node එක දක්වා එන්න.මෙන්න මේ කියපු දේ තමයි Linked List එකක තියෙන ලොකුම Disadvantage එක.

දැන් බලමු කොමද අපි Nodes කිහිපයක් එකට Link කරන්නේ කියල.

ඔයාලට මේක දිහා බැලුවම මං කියපු දේවල් තේරෙන්න ඇති කියල හිතනවා .අපි එක Node එකක් අනිත් Node එකට Link  කරනවා Next කියන variable පාවිච්චි කරලා.

එත් මං නොකියපු එක වචනයක් මේ පින්තුරේ තියෙනව ඔයාලට පේනවා ඇති.
Pointer මොකක්ද මේ Pointer කියන්නේ?
C  Language එක ඉගෙන ගෙන තියෙන යාලුවෝ දන්නවා ඇති Pointer එකක් කියන්නේ මොකක් හරි variable(Element) එකක memory address එක කියල.ඒ වගේ මෙතනදීත් Pointer එක කියල පෙන්නලා තියෙන්නේ ඊලග Node එකේ memory address එක. හැබැයි තව මතක තියාගන්න දෙයක් තියෙනව JAVA වගේ Language වලදී අපි මෙන්න මේ කියන  memory address එක හදුන්වන්නෙ Reference එකක් කියල.

අනිත් වැදගත් දේ තමයි Tail එකේ next එක මොකක්ද කියන එක.  කලින් බලපු පින්තුරේ පේනවනේ අපි Tail එකේ Next variable එකට මුකුත් assign කරලා නැහැ කියල එහෙනම් මොකක්ද Tail next එක වෙන්නේ.
Tail එකේ Next  එකට අපි assignකරන්නේ null එකක්(null ගැන නොදන්නා යාලුවොන්ට පුළුවන් මෙතනින් 
ගිහින් null ගැන දැනගන්න).

ගොඩාක් Language වල අපිට පාවිච්චි කරන්න පුළුවන් Linked List classes default තියෙනව අපිට ඕනේ නම් ඒවා පාවිච්චි කරන්නත් පුළුවන් නැත්තම් අපිටම කියල Linked List එකක් හදාගන්න අපිට පුළුවන් වෙන්න ඕනේ.

මං දැන් කරන්න හදන්නේ ඒ වගේ  අපිටම කියල කොහොමද Linked List එකක් හදාගන්නේ කියන දේ කියල දෙන්නයි.මං මේකට පාවිච්චි කරන්නේ  JAVA Language එක.

මං මේකට මං  ලියලා  තියෙන JAVA code එක  දාන්නම් ඔයාල එක හොදට බලාගන්න. එක ලේසියෙන්ම ඔයාලට තේරුම් ගන්න පුළුවන් මොකද එක මං ලියල තියෙන්නේ ගොඩාක්ම සරලව.

මේකෙදි මං පාවිච්චි කරන ප්‍රධාන classes තුනක් තියෙනව
  1.  Node class මේක පාවිච්චි කරනවා අලුත් Node එකක් හදාගන්න.
  2. LinkedList class මේක පාවිච්චි කරනවා  අලුත් LinkedList එකක් හදන්න ඒ හදාගත්ත List එකට අලුතින් Node එකක්  Insert,  NodeNode එකක් Delete කරන්න, Element එකක් තියෙනවද නැද්ද කියල හොයාගන්න,List එක Empty ද කියල බලාගන්න, Values Display කරන්න වෙන වෙනම  methods තියෙනව.
  3. අන්තිමටම main class එක පාවිච්චි කරලා අපේ code හරියටම වැඩ ක්කරනවද කියල check කරගන්නවා.
 මෙතන තියෙන ලින්ක් එකෙන් මගේ github account එකේ තියෙන LinkList Code එක බාගන්න පුළුවන්

ඔයාලට මේ code එක තේරුම් ගන්න බැරි කමක් තියෙයිනම් මට comment එකකින් කියන්න එහෙම උනොත් මං මගේ ඊලග  article එක මේක පැහැදිලි කරන්න ලියන්නම්.

එහෙනම් යාලුවනේ  මං හිතනව මගේ   article එකෙන් ඔයාලට Linked List ගැන අවබෝදයක් එන්න ඇති කියල  එහෙනම්  තවත්  මේ  වගේම   article එකකින් මං ඔයාලව හම්බෙන්න එන්නම්  .

No comments:

Post a Comment