כיצד ליישם רשימה מקושרת בפייתון?



מאמר זה מראה כיצד ניתן ליצור רשימה מקושרת בפיתון בשיטות שונות להכנסת עדכון והסרת האלמנטים ברשימה המקושרת.

שפת התכנות של פייתון היא שפת קוד פתוח עם יישומים שונים מהקופסה שהופכים אותה לייחודית וקלה יותר ללמוד. למרות ש אינו תומך ברעיון של רשימה מקושרת, יש דרך לעקוף אותה באמצעות יישום אחר כדי להשיג רשימה מקושרת. במאמר זה נלמד כיצד נוכל ליצור רשימה מקושרת בפייתון. להלן הנושאים הניתנים בבלוג זה:

בואו נתחיל!!





מהי רשימה מקושרת?

רשימת הקישורים היא רצף של צמתים בעלי סוג נתונים דומה, כל צומת מכיל אובייקט נתונים אחד ומצביע לצומת הבא.

רשימה מקושרת היא מבנה נתונים ליניארי עם אוסף של מספר צמתים. איפה האלמנט ach מאחסן נתונים משלו ומצביע למיקום האלמנט הבא. החוליה האחרונה ברשימה מקושרת מצביעה על null, המציין את סוף השרשרת. אלמנט ברשימה מקושרת נקרא a צוֹמֶת . הצומת הראשון נקרא רֹאשׁ .הצומת האחרון נקראה זָנָב .
רשימה מקושרת - רשימה מקושרת בפיתון - edurekaלספריית פיתון רגילה אין רשימה מקושרת. אנו יכולים ליישם את הרעיון של מבנה הנתונים של רשימת הקישורים באמצעות המושג צמתים.



עכשיו שלמדנו על מה שמקושר. אז בואו נעבור ליישום רשימה מקושרת.

יישום רשימה מקושרת

ליצירת רשימה מקושרת, אנו יוצרים אובייקט צומת ויוצרים מחלקה אחרת כדי להשתמש באובייקט צומת זה.
קוד ליצירת מחלקת צומת.
התוכנית לעיל יוצרת רשימה מקושרת עם שלושה אלמנטים נתונים.

צומת מחלקה (אובייקט): # בונה ליזום משתני מחלקות def __init __ (עצמי, נתונים = אין, הבא_צומת = אין): עצמית.דאטה = נתונים עצמית.נאקס_נוד = הבא_צומת # קבל נתונים def get_data (עצמי): להחזיר self.data # קבל את הערך הבא def get_next (עצמי): להחזיר self.next_node # להגדיר את הנתונים הבא def set_next (עצמי, new_next): self.next_node = new_next

יישום רשימת קישורים מורכב מהפונקציונליות הבאה ברשימה מקושרת
אחד. לְהַכנִיס : שיטה זו תוסיף צומת חדש ברשימה מקושרת.
2. גודל : שיטה זו תחזיר את גודל הרשימה המקושרת.
3. לחפש : שיטה זו תחזיר צומת המכילה את הנתונים, אחרת תעלה שגיאה
ארבע. לִמְחוֹק : שיטה זו תמחק צומת המכילה את הנתונים, אחרת תעלה שגיאה



מאפשר לראות את הרשימה שיטות קישור

למה לי ללמוד SQL

שיטה ראשונית ברשימה מקושרת

class LinkedList (object): def __init __ (self, head = None): self.head = head

שיטת Init משמשת לאתחול של a מעמד משתנה אם לרשימה אין צמתים היא מוגדרת לאף.

לְהַכנִיס:

def insert (עצמי, נתונים): new_node = צומת (נתונים) new_node.set_next (self.head) self.head = new_node

שיטת הוספה זו לוקחת נתונים, מאתחלת צומת חדש עם הנתונים הנתונים ומוסיפה אותם לרשימה. מבחינה טכנית ניתן להכניס צומת בכל מקום ברשימה, אך הדרך הפשוטה ביותר לעשות זאת היא למקם אותו בראש הרשימה ולכוון את הצומת החדש על הראש הישן (סוג של דחיפת הצמתים האחרים לאורך הקו).

גודל

# מחזירה את המספר הכולל של הצומת בגודל הרשימה def (עצמי): הנוכחי = ספירת הראש העצמית = 0 בעוד הנוכחי: ספירה + = 1 זרם = הנוכחי. Get_next () ספירת החזרות

שיטת הגודל פשוטה מאוד, היא בעצם סופרת צמתים עד שהיא לא מצליחה למצוא יותר, ומחזירה כמה צמתים היא מצאה. השיטה מתחילה בצומת הראש, עוברת לאורך קו הצמתים עד שהיא מגיעה לסוף (הזרם יהיה None כשהוא מגיע לסוף) תוך מעקב אחר מספר הצמתים שהיא ראתה.

לחפש

הדרכת סטודיו לאנדרואיד למתחילים
# מחזיר את הצומת ברשימה עם nodeData, שגיאה התרחשה אם הצומת לא קיים חיפוש def (עצמי, nodeData): הנוכחי = self.head isPresent = שקר בזמן הנוכחי והוא הנוכחי הוא שקר: אם current.get_data () == nodeData: isPresent = עוד נכון: הנוכחי = current.get_next () אם הנוכחי אינו: העלאת ValueError ('הנתונים לא נמצאים ברשימה') להחזיר הנוכחי

החיפוש למעשה דומה מאוד לגודל, אך במקום לחצות את כל רשימת הצמתים הוא בודק בכל תחנה אם הצומת הנוכחי מכיל את הנתונים המבוקשים. אם כן, מחזיר את הצומת המחזיק בנתונים אלה. אם השיטה עוברת את הרשימה כולה אך עדיין לא מצאה את הנתונים, היא מעלה שגיאת ערך ומודיעה למשתמש שהנתונים אינם ברשימה.

לִמְחוֹק

# הסר את הצומת מהרשימה המקושרת מחזירה שגיאה אם ​​הצומת אינו קיים def delete (self, nodeData): current = self.head previous = None isPresent = False while current and isPresent is False: if current.get_data () == nodeData: isPresent = עוד אמיתי: הקודם = הנוכחי הנוכחי = הנוכחי. Get_next () אם הנוכחי הוא לא: העלה את ValueError ('הנתונים אינם קיימים ברשימה') אם הקודם הוא ללא: self.head = current.get_next () אחר: הקודם. Set_next ( current.get_next ())

שיטת המחיקה עוברת את הרשימה באותו אופן שעושה החיפוש, אך בנוסף לעקוב אחר הצומת הנוכחי, שיטת המחיקה זוכרת גם את הצומת האחרון בו ביקרו. כאשר המחיקה מגיעה לבסוף לצומת שהוא רוצה למחוק. זה פשוט מסיר את הצומת הזה מהשרשרת על ידי 'זינוק מעבר' אותו.

כוונתי לזה שכאשר שיטת המחיקה מגיעה לצומת שהיא רוצה למחוק, היא מסתכלת על הצומת האחרון בו ביקר (הצומת 'הקודם') ומאפסת את מצביע הצומת הקודם. במקום להצביע על הצומת שיימחק בקרוב.

מה מבוי סתום בג'אווה

זה יצביע על הצומת הבא בתור. מכיוון שאף צמתים אינם מצביעים על הצומת המסכן הנמחק, הוא מוסר למעשה מהרשימה!

זה מביא אותנו לסוף מאמר זה בו למדנו כיצד אנו יכולים להכין רשימה מקושרת בפייתון עם יישום דומה למרות שפיתון לא ממש תומך במושג רשימה מקושרת. אני מקווה שברור לך עם כל מה ששותף איתך במדריך זה.

אם מצאת מאמר זה בנושא 'רשימה מקושרת בפייתון' רלוונטי, עיין בכתובת חברת למידה מקוונת מהימנה עם רשת של יותר מ -250,000 לומדים מרוצים הפרוסים ברחבי העולם.

אנחנו כאן כדי לעזור לכם בכל שלב בדרככם ולהעלות תוכנית לימודים המיועדת לסטודנטים ואנשי מקצוע שרוצים להיות . הקורס נועד לתת לך יתרון בתכנות פיתון ולהכשיר אותך למושגי ליבה מרכזיים ומתקדמים יחד עם מגוון כמו

אם אתה נתקל בשאלות כלשהן, אל תהסס לשאול את כל השאלות שלך בקטע התגובות של 'רשימה מקושרת בפייתון' והצוות שלנו ישמח לענות.