෴වළාකුළ෴

සිංහල තොරතුරු තාක්ෂණික විකේතනය....

Linked Lists ගැන කියන්න කලින් කට්ටියටම Arrays ගැන මතක් කලොත් හොදයි කියල හිතෙනව , 
Array එකක් ලියන්නේ කොහොමද?
void numlist(){

int numbers[100];  
numbers[0]=1;
numbers[1]=2;
numbers[2]=3;
}


ඉහතින් දැක්වෙන්නේ එක උදාහරනයක්.මෙහිද කරල තියෙන්නේ numlist කියල function එකක් තියෙනව int values 100 ක් ඇතුලත් කල හැකි Array එකක් සහිතව,මෙහි [] ලකුණින් Array එකේ ඇති Elements ගණන තීරණය කරනවා.


පහලින් කරල තියෙන්නේ මුල් Elements වලට Values Assign කරල තියෙන විදිහ.(මතක තියාගන්න මෙහි 0 යනුවෙන් ඇත්තේ පළමු element එකේ Index එකයි,අන්තිම Element එකේ Index එක වෙන්නේ එතකොට 99 )


මං හිතනවා මේක කියවන කට්ටියට Pointers ගැන ප්‍රමාණවත් දැනුමක් තියෙනව කියල(නැත්තම් පහලින් කොමෙන්ටුවක් දමා යන්න ,මම ඒ ගැනත් ලියන්නම්)


Array එකක් හා Linked List එකක් වෙනස් වෙන මූලිකම විදිහ මේවායේ දත්ත ගබඩා වන ක්‍රමවේදයයි


Array එකක දත්ත ගබඩා වෙන්නේ එකම Memory Block එකක. නමුත් Linked Lists එහෙම නෙවෙයි මේකෙදී දත්ත කොටස් ගබඩා වෙන්නේ වෙන වෙනම Memory Blocks වල(මේකට කියනව Linked List Element කියලා,Node එකක් කියල හදුන්වන්නෙත් මේකම තමයි.)


Node එකක තියෙනව කොටස් දෙකක්


1.දත්ත ගබඩා කරන කොටස සහ

2.ඊළග Memory Block එකේ ලිපිනය (Address)එක අඩංගු කොටස


මෙන්න මේ විදිහට එකිනෙකට සම්බන්ධ වෙච්ච Nodes වලින් තමයි Linked List එකක් නිර්මාණය වෙන්නේ.





ඔය ඉහලින් තියෙන්නේ ඒ වගේ එකක් තමා. A කියන Node එකේ Address එක තියාගෙන ඉන්න Element එකට කියනවා Head Pointer එක කියල. එතන තමයි Linked List එකක් ආරම්භ වන තැන.


Node එකක් සාදන අයුරු…


struct node{
int data;
struct node*next;
};



මෙතනදී කරල තියෙන්නේ Pointer Node එකක් හා පෙර සදහන් කල පරිදි දත්ත අඩංගු කරන්න data කියල Variable එකක් හදපු එක.මේක තියෙන්නේ node කියල Structure එකක.


දැන් අපි කරන්නේ මේක පාවිච්චි කරල Singly Linked Lists වර්ගයට අයත් Linked List එකක් හදන එක.(Linked List වර්ග කීපයක් තියෙනව Singly Linked Lists,Doubly Linked Lists හා Circluar Linked Lists කියල)


දැන් අපි Function එකක් ලියමු අගයන් 3ක් ඇතුලත් කල Linked List එකක් සදහා,


struct node* AddValues(){

struct node* head=NULL;
struct node* second=NULL;
struct node* third=NULL;


head =malloc(sizeof(struct node));
second =malloc(sizeof(struct node));
third =malloc(sizeof(struct node));

head->data=1;
head->next=second;

second->data=2;
second->next=third;

third->data=3;
third->next=NULL;
return head;
}




මේ Function එකේදී කරල තියෙන්නේ head,second,third කියල Nodes 3 ක් අපි කලින් හදපු Node Structure එක භාවිතයෙන් හදපු එක.


malloc කියන්නේ C/C++ වල Memory Allocate  කරන Function එක,මෙහෙම තමයි පරිගණකයේ තත්‍ය මතකය(Physical Memory) එකේ මේ සදහා ඉඩ වෙන් කරගන්නේ.


ඊට පහලින් කරල තියෙන්නේ ඉතින් Values Assign කරල තියෙන එක තමා(මේකට ඉතින් pointer arithmetic ගැන දැන ගන්න ඕනේ)


මීලඟ ලිපියෙන් අනිත් Linked List වර්ග ගැන කතා කරමු.

Pages

වැඩිදෙනෙක් කියැවූ ලිපි

Followers

ගොඩවැදුනු අය....