"మనమంతా జాబితా ఇంటర్ఫేస్తో పూర్తి చేసామని మీరు అనుకుంటే, మీరు పొరపాటు పడినట్టే. మేము ఇప్పుడే ప్రారంభించాము. లింక్డ్లిస్ట్ మరియు అర్రేలిస్ట్ సేకరణల గురించి నేను మీకు చెప్తాను."
"నేను అర్రేలిస్ట్ సేకరణతో ప్రారంభిస్తాను."
"ఈ సేకరణ యొక్క వారసత్వ రేఖాచిత్రం ఎలా కనిపిస్తుందో ఇక్కడ ఉంది:"
"ఇంటర్ఫేస్లు ఆకుపచ్చగా ఉన్నాయి."
"నైరూప్య తరగతులు ఊదా రంగులో ఉంటాయి."
"సాధారణ తరగతులు ఎరుపు."
"ఘన పంక్తులు వారసత్వాన్ని సూచిస్తాయి మరియు డాష్ చేసిన పంక్తులు ఇంటర్ఫేస్ అమలులను సూచిస్తాయి."
"ఇది సరళమైన సేకరణ. అర్రేలిస్ట్ లోపల , ఎలిమెంట్స్ సాధారణ శ్రేణిలో నిల్వ చేయబడతాయి."
"అరే కంటే ఈ సేకరణ యొక్క ప్రాధమిక ప్రయోజనం విస్తరించే సామర్థ్యం, అనగా దాని పొడవును అవసరమైన విధంగా పెంచుకునే సామర్థ్యం."
"శ్రేణి ఖాళీ అయిపోతే, రెండవ పెద్ద శ్రేణి సృష్టించబడుతుంది మరియు మొదటి శ్రేణిలోని అన్ని మూలకాలు దానికి కాపీ చేయబడతాయి. తర్వాత రెండవ శ్రేణి మొదటి స్థానంలో ఉంటుంది మరియు మొదటిది విస్మరించబడుతుంది (అది అవుతుంది చెత్త సేకరించేవారిచే నాశనం చేయబడింది)."
"శ్రేణి ఎంత పెద్దదిగా ఉంటుంది?"
"కొత్త శ్రేణి పొడవు (3*n)/2+1గా లెక్కించబడుతుంది, ఇక్కడ n అనేది పాత శ్రేణి పొడవు. మరో మాటలో చెప్పాలంటే, పాత శ్రేణి 100 మూలకాల పొడవు ఉంటే, కొత్తది 300/2+1 అవుతుంది = 151."
"అరేలిస్ట్ మధ్యలో ఒక మూలకాన్ని జోడించినప్పుడు, కొత్త మూలకం చొప్పించబడే కుడివైపున ఉన్న అన్ని మూలకాలు కుడివైపుకి 1 స్థానం కాపీ చేయబడతాయి, ఆపై కొత్త మూలకం ఖాళీ సెల్కు జోడించబడుతుంది."
"మధ్య నుండి ఒక మూలకాన్ని తీసివేసినప్పుడు, ఆ మూలకం యొక్క కుడి వైపున ఉన్న అన్ని మూలకాలు ఎడమవైపుకి 1 స్థానం కాపీ చేయబడతాయి."
"మీరు దానికి ఎలిమెంట్లను జోడించినప్పుడు అర్రేలిస్ట్ చాలా పొడవుగా ఉంటుందని మరియు మీరు ఎలిమెంట్లను తీసివేసినప్పుడు అది చిన్నదిగా ఉంటుందని మీరు చెబుతున్నారా?"
"లేదు, అర్రేలిస్ట్లోని శ్రేణి తనంతట తానుగా ఎప్పుడూ చిన్నదిగా మారదు; అయినప్పటికీ, మీరు ట్రిమ్టోసైజ్ () పద్ధతిని కాల్ చేయడం ద్వారా దాని అంతర్గత శ్రేణిని దాని అంతర్గత శ్రేణిని అతి చిన్న పరిమాణానికి కుదించవలసి ఉంటుంది."
"మరియు, వాస్తవానికి, నేను మీకు లింక్డ్లిస్ట్ గురించి చెబుతాను."
"దీని వారసత్వ రేఖాచిత్రం ఎలా ఉంటుందో ఇక్కడ ఉంది:"
"ఇంటర్ఫేస్లు ఆకుపచ్చగా ఉన్నాయి."
"నైరూప్య తరగతులు ఊదా రంగులో ఉంటాయి."
"సాధారణ తరగతులు ఎరుపు."
"ఘన పంక్తులు వారసత్వాన్ని సూచిస్తాయి మరియు డాష్ చేసిన పంక్తులు ఇంటర్ఫేస్ అమలులను సూచిస్తాయి."
"మీకు ఇప్పటికే తెలిసినట్లుగా, లింక్డ్లిస్ట్ మూలకాలను లింక్ చేయబడిన జాబితాగా నిల్వ చేస్తుంది."
"నేను అన్ని సమయాలలో వింటున్నాను, కానీ అది ఏమిటో మీరు నాకు చెప్పగలరా?"
"తప్పకుండా. "ఇది చాలా సులభం."
"లింక్ చేయబడిన జాబితాలో ఎ) డేటాను నిల్వ చేసే అంశాలు మరియు బి) తదుపరి మరియు మునుపటి అంశాలకు సూచనలను నిల్వ చేసే అంశాలు ఉంటాయి ."
" అటువంటి మూలకం కోసం క్లాస్ స్ట్రింగ్లను నిల్వ చేస్తే ఈ విధంగా కనిపిస్తుంది:"
ఉదాహరణ | వివరణ |
---|---|
|
డేటా ఫీల్డ్ మూలకం యొక్క స్ట్రింగ్ విలువను నిల్వ చేస్తుంది. తదుపరి ఫీల్డ్ జాబితాలోని తదుపరి మూలకానికి సూచనను నిల్వ చేస్తుంది . మునుపటి ఫీల్డ్ జాబితాలోని మునుపటి మూలకం యొక్క సూచనను నిల్వ చేస్తుంది . |
"మరియు మేము సాధారణ రకం డిక్లరేషన్ని ఉపయోగిస్తే, అది ఇలా కనిపిస్తుంది:"
class LinkedListElement<T>
{
T data;
LinkedListElement<T> next;
LinkedListElement<T> previous;
}
"అర్థం అవుతుంది."
"దీనిని బాగా అర్థం చేసుకోవడానికి, డబుల్-లింక్ చేయబడిన జాబితాకు 10 మూలకాలను జోడించే కోడ్ని వ్రాస్దాం:"
public static void main(String[] args)
{
LinkedListElement<Integer> tail; // The tail (very last element) of the list
for(int i = 0; i < 10; i++)
{
LinkedListElement<Integer> element = new LinkedListElement<Integer>();
element.data = i;
if (tail == null) // If the tail doesn't exist, then make our element the last element
{
tail = element;
}
else // if there is a tail, add the element
{
tail.next = element; // Set the next field on the tail element
element.previous = tail; // Add a reference to the tail to the new element
tail = element; // Make the new element the tail
}
}
}
"జాబితాలో మనకు 10 మూలకాలు ఉన్నాయని ఊహించండి. మధ్యలో ఒక మూలకాన్ని ఎలా చొప్పించాలో ఇక్కడ ఉంది:"
"మారిన లింక్లు ప్రకాశవంతమైన ఎరుపు రంగులో హైలైట్ చేయబడ్డాయి . అవి ఇప్పుడు కొత్త మూలకాన్ని సూచిస్తాయి."
"కొత్త లింక్లు ప్రకాశవంతమైన ఊదా రంగులో హైలైట్ చేయబడ్డాయి . అవి దాని పొరుగువారికి కొత్త మూలకం యొక్క లింక్లు."
"మరియు ఇప్పుడు కోడ్గా:"
// This field stores the element that is the head of the list
LinkedListElement<Integer> head = …
// Get the 4th element (counting from zero)
LinkedListElement<Integer> element4 = head.next.next.next.next;
// Get the 5th element
LinkedListElement<Integer> element5 = element4.next;
// Create the new element that we will insert
LinkedListElement<Integer> newElement = new LinkedListElement<Integer>();
newElement.data = -18;
// Replace the references in the element on the left
newElement.previous = element4;
element4.next = newElement;
// Replace the references in the element on the right
newElement.next = element5;
element5.previous = newElement;
"ధన్యవాదాలు, ఎల్లీ. నేను ఖచ్చితంగా జాబితాల గురించి చాలా కొత్త విషయాలు నేర్చుకున్నాను."
GO TO FULL VERSION