స్టాక్ మరియు క్యూ మధ్య వ్యత్యాసం
విషయము
- పోలిక చార్ట్
- స్టాక్ యొక్క నిర్వచనం
- ఉదాహరణ
- క్యూ యొక్క నిర్వచనం
- ఉదాహరణ
- స్టాక్ అమలు
- క్యూ అమలు
- స్టాక్పై ఆపరేషన్లు
- క్యూలో కార్యకలాపాలు
- స్టాక్ యొక్క అనువర్తనాలు
- క్యూ యొక్క అనువర్తనాలు
- ముగింపు
స్టాక్ మరియు క్యూ రెండూ ఆదిమ కాని డేటా నిర్మాణాలు. స్టాక్ మరియు క్యూ మధ్య ఉన్న ప్రధాన తేడాలు ఏమిటంటే, డేటా ఎలిమెంట్లను యాక్సెస్ చేయడానికి మరియు జోడించడానికి స్టాక్ LIFO (ఫస్ట్ అవుట్ లో చివరిది) పద్ధతిని ఉపయోగిస్తుంది, అయితే డేటా ఎలిమెంట్లను యాక్సెస్ చేయడానికి మరియు జోడించడానికి క్యూ FIFO (ఫస్ట్ ఇన్ ఫస్ట్ అవుట్) పద్ధతిని ఉపయోగిస్తుంది.
డేటా ఎలిమెంట్లను నెట్టడానికి మరియు పాపింగ్ చేయడానికి స్టాక్కు ఒక చివర మాత్రమే తెరిచి ఉంది, డేటా ఎలిమెంట్లను ఎన్క్యూయింగ్ చేయడానికి మరియు డీక్యూయింగ్ చేయడానికి క్యూ రెండు చివరలను తెరిచింది.
స్టాక్ మరియు క్యూ అనేది డేటా మూలకాలను నిల్వ చేయడానికి ఉపయోగించే డేటా నిర్మాణాలు మరియు వాస్తవానికి ఇవి కొన్ని వాస్తవ ప్రపంచ సమానమైన వాటిపై ఆధారపడి ఉంటాయి. ఉదాహరణకు, స్టాక్ అనేది సిడిల స్టాక్, ఇక్కడ మీరు సిడిల స్టాక్ పైభాగంలో బయటకు తీసుకొని సిడిలో ఉంచవచ్చు. అదేవిధంగా, క్యూ అనేది థియేటర్ టిక్కెట్ల కోసం ఒక క్యూ, ఇక్కడ మొదటి స్థానంలో నిలబడి ఉన్న వ్యక్తి, అనగా, క్యూ ముందు ముందు వడ్డిస్తారు మరియు వచ్చే కొత్త వ్యక్తి క్యూ వెనుక భాగంలో కనిపిస్తుంది (క్యూ వెనుక భాగం).
- పోలిక చార్ట్
- నిర్వచనం
- కీ తేడాలు
- అమలు
- ఆపరేషన్స్
- అప్లికేషన్స్
- ముగింపు
పోలిక చార్ట్
పోలిక కోసం ఆధారం | స్టాక్ | క్యూ |
---|---|---|
పని సూత్రం | LIFO (ఫస్ట్ అవుట్ లో చివరిది) | FIFO (ఫస్ట్ ఇన్ ఫస్ట్ అవుట్) |
నిర్మాణం | మూలకాలను చొప్పించడానికి మరియు తొలగించడానికి అదే ముగింపు ఉపయోగించబడుతుంది. | చొప్పించడానికి ఒక చివర ఉపయోగించబడుతుంది, అనగా, వెనుక చివర మరియు మరొక చివర మూలకాలను తొలగించడానికి ఉపయోగిస్తారు, అనగా ఫ్రంట్ ఎండ్. |
ఉపయోగించిన పాయింటర్ల సంఖ్య | ఒక | రెండు (సాధారణ క్యూ కేసులో) |
ఆపరేషన్లు చేశారు | పుష్ మరియు పాప్ | ఎన్క్యూ మరియు డీక్యూ |
ఖాళీ స్థితిని పరిశీలించడం | టాప్ == -1 | ముందు == -1 || ముందు == వెనుక + 1 |
పూర్తి పరిస్థితి పరీక్ష | టాప్ == గరిష్టంగా - 1 | వెనుక == గరిష్టంగా - 1 |
రకరకాలు | దీనికి వేరియంట్లు లేవు. | ఇది వృత్తాకార క్యూ, ప్రాధాన్యతా క్యూ, రెట్టింపు ముగింపు క్యూ వంటి వేరియంట్లను కలిగి ఉంది. |
అమలు | సరళమైన | తులనాత్మకంగా సంక్లిష్టమైనది |
స్టాక్ యొక్క నిర్వచనం
స్టాక్ అనేది ఆదిమేతర సరళ డేటా నిర్మాణం. ఇది క్రొత్త అంశం జతచేయబడిన మరియు ఇప్పటికే ఉన్న మూలకం ఒకే చివర నుండి తొలగించబడుతుంది, దీనిని స్టాక్ పైభాగం (TOS) అని పిలుస్తారు. స్టాక్ ఎగువ నుండి అన్ని తొలగింపు మరియు చొప్పించడం జరుగుతుంది కాబట్టి, జోడించిన చివరి మూలకం స్టాక్ నుండి తొలగించబడిన మొదటిది. స్టాక్ను లాస్ట్-ఇన్-ఫస్ట్-అవుట్ (LIFO) రకం జాబితా అని పిలవడానికి కారణం అదే.
స్టాక్లో తరచుగా ప్రాప్యత చేయబడిన మూలకం అగ్రశ్రేణి మూలకం అని గమనించండి, అయితే చివరిగా అందుబాటులో ఉన్న మూలకం స్టాక్ దిగువన ఉంటుంది.
ఉదాహరణ
మీలో కొందరు బిస్కెట్లు (లేదా పాపిన్స్) తినవచ్చు. మీరు If హిస్తే, కవర్ యొక్క ఒక వైపు మాత్రమే నలిగిపోతుంది, మరియు బిస్కెట్లు ఒక్కొక్కటిగా తీయబడతాయి. దీనినే పాపింగ్ అని పిలుస్తారు, అదేవిధంగా, మీరు కొంతకాలం తర్వాత కొన్ని బిస్కెట్లను భద్రపరచాలనుకుంటే, మీరు వాటిని తిరిగి ప్యాక్లోకి పెడతారు, అదే చిరిగిన ముగింపు ద్వారా నెట్టడం అంటారు.
క్యూ యొక్క నిర్వచనం
క్యూ అంటే సరళ డేటా నిర్మాణం ఆదిమ రకానికి చెందిన వర్గంలో వస్తుంది. ఇది ఒకే రకమైన మూలకాల సమాహారం. కొత్త మూలకాల కలయిక వెనుక చివర అని పిలువబడే ఒక చివరలో జరుగుతుంది. అదేవిధంగా, ఇప్పటికే ఉన్న మూలకాల తొలగింపు ఫ్రంట్-ఎండ్ అని పిలువబడే మరొక చివరలో జరుగుతుంది మరియు ఇది తార్కికంగా ఫస్ట్ ఇన్ ఫస్ట్ అవుట్ (FIFO) రకం జాబితా.
ఉదాహరణ
మన రోజువారీ జీవితంలో మనం కోరుకున్న సేవ కోసం ఎదురుచూడడానికి అనేక పరిస్థితులను ఎదుర్కొంటాము, అక్కడ సేవ చేయడానికి మన వంతు కోసం వెయిటింగ్ లైన్లోకి రావాలి. ఈ వెయిటింగ్ క్యూను క్యూగా భావించవచ్చు.
- స్టాక్ మరోవైపు LIFO యంత్రాంగాన్ని అనుసరిస్తుంది, మూలకాలను జోడించడానికి మరియు తొలగించడానికి క్యూ FIFO విధానాన్ని అనుసరిస్తుంది.
- స్టాక్లో, మూలకాలను చొప్పించడానికి మరియు తొలగించడానికి అదే ముగింపు ఉపయోగించబడుతుంది. దీనికి విరుద్ధంగా, మూలకాలను చొప్పించడానికి మరియు తొలగించడానికి క్యూలో రెండు వేర్వేరు చివరలను ఉపయోగిస్తారు.
- స్టాక్కు ఒకే ఓపెన్ ఎండ్ మాత్రమే ఉన్నందున, స్టాక్ పైభాగాన్ని సూచించడానికి ఒకే పాయింటర్ను ఉపయోగించటానికి కారణం. కానీ క్యూ ముందు మరియు క్యూ యొక్క వెనుక చివరను సూచించడానికి రెండు పాయింటర్లను ఉపయోగిస్తుంది.
- స్టాక్ పుష్ మరియు పాప్ అని పిలువబడే రెండు ఆపరేషన్లను చేస్తుంది, క్యూలో దీనిని ఎన్క్యూ మరియు డీక్యూ అని పిలుస్తారు.
- స్టాక్ అమలు గమ్మత్తైనది అయితే స్టాక్ అమలు సులభం.
- క్యూలో వృత్తాకార క్యూ, ప్రాధాన్యతా క్యూ, రెట్టింపు ముగింపు క్యూ వంటి వైవిధ్యాలు ఉన్నాయి. దీనికి విరుద్ధంగా, స్టాక్కు వేరియంట్లు లేవు.
స్టాక్ అమలు
స్టాక్ రెండు విధాలుగా వర్తించవచ్చు:
- స్థిర అమలు స్టాక్ను సృష్టించడానికి శ్రేణులను ఉపయోగిస్తుంది. స్టాటిక్ ఇంప్లిమెంటేషన్ అప్రయత్నంగా టెక్నిక్ అయినప్పటికీ సృష్టి యొక్క సరళమైన మార్గం కాదు, ఎందుకంటే ప్రోగ్రామ్ రూపకల్పనలో స్టాక్ యొక్క పరిమాణం యొక్క డిక్లరేషన్ చేయవలసి ఉంటుంది, ఆ తరువాత పరిమాణం వైవిధ్యంగా ఉండదు. అదనంగా, మెమరీ వినియోగానికి సంబంధించి స్టాటిక్ ఇంప్లిమెంటేషన్ చాలా సమర్థవంతంగా ఉండదు. ఆపరేషన్ ప్రారంభానికి ముందు (ప్రోగ్రామ్ డిజైన్ సమయంలో) శ్రేణి (స్టాక్ అమలు కోసం) ప్రకటించబడినందున. ఇప్పుడు క్రమబద్ధీకరించవలసిన మూలకాల సంఖ్య స్టాక్లో చాలా తక్కువగా ఉంటే స్థిరంగా కేటాయించిన మెమరీ వృధా అవుతుంది. మరోవైపు, స్టాక్లో ఎక్కువ మూలకాలు నిల్వ ఉంటే, దాని సామర్థ్యాన్ని పెంచడానికి మేము శ్రేణి యొక్క పరిమాణాన్ని మార్చలేము, తద్వారా ఇది క్రొత్త అంశాలకు అనుగుణంగా ఉంటుంది.
- డైనమిక్ అమలు లింక్డ్ లిస్ట్ ప్రాతినిధ్యం అని కూడా పిలుస్తారు మరియు డేటా నిర్మాణం యొక్క స్టాక్ రకాన్ని అమలు చేయడానికి పాయింటర్లను ఉపయోగిస్తుంది.
క్యూ అమలు
క్యూను రెండు విధాలుగా అమలు చేయవచ్చు:
- స్థిర అమలు: శ్రేణులను ఉపయోగించి క్యూ అమలు చేయబడితే, మేము క్యూలో నిల్వ చేయదలిచిన మూలకాల యొక్క ఖచ్చితమైన సంఖ్య ముందుగానే హామీ ఇవ్వాలి, ఎందుకంటే శ్రేణి యొక్క పరిమాణాన్ని డిజైన్ సమయంలో లేదా ప్రాసెసింగ్ ప్రారంభించే ముందు ప్రకటించాలి. ఈ సందర్భంలో, శ్రేణి యొక్క ప్రారంభం క్యూ ముందు భాగం అవుతుంది మరియు శ్రేణి యొక్క చివరి స్థానం క్యూ వెనుక భాగంలో పనిచేస్తుంది. శ్రేణులను ఉపయోగించి అమలు చేసినప్పుడు క్యూలో ఉన్న మొత్తం అంశాలు కింది సంబంధం ఇస్తుంది:
ముందు - వెనుక + 1
“వెనుక <ముందు” ఉంటే క్యూలో మూలకం ఉండదు లేదా క్యూ ఎల్లప్పుడూ ఖాళీగా ఉంటుంది. - డైనమిక్ అమలు: పాయింటర్లను ఉపయోగించి క్యూలను అమలు చేయడం, ప్రధాన ప్రతికూలత ఏమిటంటే, అనుసంధాన ప్రాతినిధ్యంలోని నోడ్ శ్రేణి ప్రాతినిధ్యంలో సంబంధిత మూలకం కంటే ఎక్కువ మెమరీ స్థలాన్ని వినియోగిస్తుంది. ప్రతి నోడ్లో కనీసం రెండు ఫీల్డ్లు డేటా ఫీల్డ్కు మరియు మరొకటి తదుపరి నోడ్ యొక్క చిరునామాను నిల్వ చేయడానికి, లింక్డ్ ప్రాతినిధ్యంలో డేటా ఫీల్డ్ మాత్రమే ఉంటుంది. ఇతర మూలకాల సమూహం మధ్యలో ఒక మూలకాన్ని చొప్పించడానికి లేదా తొలగించడానికి అవసరమైనప్పుడు లింక్డ్ ప్రాతినిధ్యాన్ని ఉపయోగించడం యొక్క అర్హత స్పష్టంగా కనిపిస్తుంది.
స్టాక్పై ఆపరేషన్లు
స్టాక్పై ఆపరేట్ చేయగల ప్రాథమిక కార్యకలాపాలు క్రింది విధంగా ఉన్నాయి:
- పుష్: స్టాక్ పైభాగంలో కొత్త మూలకం జోడించినప్పుడు పుష్ ఆపరేషన్ అంటారు. స్టాక్లో ఒక మూలకాన్ని నెట్టడం మూలకాన్ని జోడించడాన్ని ప్రేరేపిస్తుంది, ఎందుకంటే కొత్త మూలకం ఎగువన చేర్చబడుతుంది. ప్రతి పుష్ ఆపరేషన్ తరువాత, పైభాగం ఒకటి పెరుగుతుంది. శ్రేణి నిండి ఉంటే, మరియు క్రొత్త మూలకాన్ని జోడించలేకపోతే, దీనిని STACK-FULL condition లేదా STACK OVERFLOW అంటారు. పుష్ ఆపరేషన్ - సి లో ఫంక్షన్:
స్టాక్ను పరిగణనలోకి తీసుకుంటే ఇలా ప్రకటించబడుతుంది
పూర్ణాంక స్టాక్, టాప్ = -1;
శూన్య పుష్ ()
{
పూర్ణాంక అంశం;
if (టాప్ <4)
{
f ("సంఖ్యను నమోదు చేయండి");
స్కాన్ ("% d", & అంశం);
టాప్ = టాప్ + 1;
stack = అంశం;
}
వేరే
{
f ("స్టాక్ నిండింది");
}
}
- పాప్: స్టాక్ పై నుండి ఒక మూలకం తొలగించబడినప్పుడు దానిని POP ఆపరేషన్ అంటారు. ప్రతి పాప్ ఆపరేషన్ తర్వాత, స్టాక్ ఒకటి తగ్గుతుంది. స్టాక్లో ఏ మూలకం మిగిలి లేకపోతే మరియు పాప్ ప్రదర్శించబడితే, ఇది స్టాక్ అండర్ఫ్లో కండిషన్కు దారి తీస్తుంది అంటే మీ స్టాక్ ఖాళీగా ఉంటుంది. పాప్ ఆపరేషన్ - సి లో విధులు:
స్టాక్ను పరిగణనలోకి తీసుకుంటే ఇలా ప్రకటించబడుతుంది
పూర్ణాంక స్టాక్, టాప్ = -1;
శూన్యమైన పాప్ ()
{
పూర్ణాంక అంశం;
if (టాప్> = 4)
{
అంశం = స్టాక్;
టాప్ = టాప్ - 1;
f ("తొలగించబడిన సంఖ్య =% d", అంశం);
}
వేరే
{
f ("స్టాక్ ఖాళీగా ఉంది");
}
}
క్యూలో కార్యకలాపాలు
క్యూలో చేయగలిగే ప్రాథమిక కార్యకలాపాలు:
- వరుసలోని: క్యూలో ఒక మూలకాన్ని చొప్పించడానికి. సి లో ఆపరేషన్ ఫంక్షన్ను ఎన్క్యూయింగ్:
క్యూగా ప్రకటించబడింది
పూర్ణాంక క్యూ, ముందు = -1 మరియు వెనుక = -1;
శూన్య జోడించు ()
{
పూర్ణాంక అంశం;
if (వెనుక <4)
{
f ("సంఖ్యను నమోదు చేయండి");
స్కాన్ ("% d", & అంశం);
if (ముందు == -1)
{
ముందు = 0;
వెనుక = 0;
}
వేరే
{
వెనుక = వెనుక + 1;
}
క్యూ = అంశం;
}
వేరే
{
f ("క్యూ నిండింది");
}
}
- dequeue: క్యూ నుండి ఒక మూలకాన్ని తొలగించడానికి. C లో ఆపరేషన్ ఫంక్షన్ను అమలు చేయడం:
క్యూగా ప్రకటించబడింది
పూర్ణాంక క్యూ, ముందు = -1 మరియు వెనుక = -1;
void delete ()
{
పూర్ణాంక అంశం;
if (ముందు! = -1)
{
అంశం = క్యూ;
if (ముందు == వెనుక)
{
ముందు = -1;
వెనుక = -1;
}
వేరే
{
ముందు = ముందు + 1;
f ("తొలగించబడిన సంఖ్య =% d", అంశం);
}
}
వేరే
{
f ("క్యూ ఖాళీగా ఉంది");
}
}
స్టాక్ యొక్క అనువర్తనాలు
- కంపైలర్లో పార్సింగ్.
- జావా వర్చువల్ మిషన్.
- వర్డ్ ప్రాసెసర్లో చర్యరద్దు చేయండి.
- వెబ్ బ్రౌజర్లో వెనుక బటన్.
- Ers కోసం పోస్ట్స్క్రిప్ట్ భాష.
- కంపైలర్లో ఫంక్షన్ కాల్లను అమలు చేస్తోంది.
క్యూ యొక్క అనువర్తనాలు
- డేటా బఫర్లు
- అసమకాలిక డేటా బదిలీ (ఫైల్ IO, పైపులు, సాకెట్లు).
- భాగస్వామ్య వనరు (ఎర్, ప్రాసెసర్) పై అభ్యర్థనలను కేటాయించడం.
- ట్రాఫిక్ విశ్లేషణ.
- సూపర్ మార్కెట్ వద్ద క్యాషియర్ల సంఖ్యను నిర్ణయించండి.
ముగింపు
స్టాక్ మరియు క్యూ సరళ డేటా నిర్మాణాలు వర్కింగ్ మెకానిజం, స్ట్రక్చర్, ఇంప్లిమెంటేషన్, వేరియంట్స్ వంటి కొన్ని మార్గాల్లో విభిన్నంగా ఉంటాయి, అయితే రెండూ జాబితాలోని మూలకాలను నిల్వ చేయడానికి మరియు మూలకాల యొక్క అదనంగా మరియు తొలగించడం వంటి జాబితాలో కార్యకలాపాలను నిర్వహించడానికి ఉపయోగిస్తారు. సాధారణ క్యూ యొక్క కొన్ని పరిమితులు ఉన్నప్పటికీ, ఇతర రకాల క్యూలను ఉపయోగించడం ద్వారా తిరిగి పొందబడతాయి.