1 00:00:00,000 --> 00:00:04,074 2 00:00:04,074 --> 00:00:05,990 DOUG لويد: كل الحق، حتى هذه النقطة كنت 3 00:00:05,990 --> 00:00:09,020 ربما مألوفة جدا مع المصفوفات والقوائم المرتبطة 4 00:00:09,020 --> 00:00:10,950 وهو الابتدائي اثنين هياكل البيانات التي قمت 5 00:00:10,950 --> 00:00:16,810 تحدث عن لحفظ مجموعات من بيانات من أنواع البيانات مماثلة نظمت. 6 00:00:16,810 --> 00:00:19,080 >> الآن نحن بصدد الحديث حول زوجين من الاختلافات 7 00:00:19,080 --> 00:00:20,330 على المصفوفات والقوائم المرتبطة. 8 00:00:20,330 --> 00:00:22,362 في هذا الفيديو ونحن في طريقنا للحديث عن مداخن. 9 00:00:22,362 --> 00:00:25,320 على وجه التحديد ونحن في طريقنا للحديث حول تسمى بنية بيانات كومة. 10 00:00:25,320 --> 00:00:28,510 نذكر من المناقشات السابقة حول مؤشرات والذاكرة، 11 00:00:28,510 --> 00:00:32,060 أن المكدس هو أيضا اسم لجزء من الذاكرة 12 00:00:32,060 --> 00:00:34,980 حيث أعلن ثابت ذاكرة memory-- أنك 13 00:00:34,980 --> 00:00:38,730 اسم، المتغيرات التي سمها، وآخرون إلى ذلك وظيفة الإطارات التي نحن أيضا 14 00:00:38,730 --> 00:00:41,000 وجود إطارات مكدس الاستدعاءات. 15 00:00:41,000 --> 00:00:45,421 لذلك هذا هو بنية بيانات مكدس ليس قطعة مكدس الذاكرة. 16 00:00:45,421 --> 00:00:45,920 حسنا. 17 00:00:45,920 --> 00:00:46,890 >> ولكن ما هو كومة؟ 18 00:00:46,890 --> 00:00:49,220 حتى انها مجرد حد كبير نوع خاص من هيكل 19 00:00:49,220 --> 00:00:51,190 التي تحافظ على البيانات بطريقة منظمة. 20 00:00:51,190 --> 00:00:53,760 وهناك اثنان جدا طرق شائعة لتنفيذ 21 00:00:53,760 --> 00:00:57,380 مداخن باستخدام هياكل البيانات اثنين أننا بالفعل على دراية، 22 00:00:57,380 --> 00:01:00,340 المصفوفات والقوائم المرتبطة. 23 00:01:00,340 --> 00:01:04,430 ما الذي يجعل خاص كومة هو الطريقة التي نضع المعلومات 24 00:01:04,430 --> 00:01:08,200 في كومة، والطريقة التي إزالة المعلومات من المكدس. 25 00:01:08,200 --> 00:01:11,600 وعلى وجه الخصوص مع أكوام القاعدة ليست سوى أكثر 26 00:01:11,600 --> 00:01:15,830 في الآونة الأخيرة عنصر إضافي يمكن إزالتها. 27 00:01:15,830 --> 00:01:17,660 >> حتى التفكير في الامر كما لو انها المكدس. 28 00:01:17,660 --> 00:01:21,170 نحن تتراكم المعلومات على رأس نفسه، 29 00:01:21,170 --> 00:01:24,271 وفقط الشيء في الجزء العلوي من كومة يمكن إزالتها. 30 00:01:24,271 --> 00:01:27,020 ونحن لا يمكن إزالة الشيء تحت لأن كل شيء آخر من شأنه 31 00:01:27,020 --> 00:01:28,020 الانهيار والسقوط. 32 00:01:28,020 --> 00:01:32,580 لذلك نحن حقا على بناء مكدس لن يكون لدينا لإزالة قطعة قطعة. 33 00:01:32,580 --> 00:01:36,590 وبسبب هذا نشير عادة إلى كومة كهيكل LIFO، 34 00:01:36,590 --> 00:01:38,940 تستمر في، انتهت الأولى. 35 00:01:38,940 --> 00:01:42,290 LIFO، تستمر في، لأول مرة. 36 00:01:42,290 --> 00:01:45,635 >> ذلك لأن هذا التقييد على كيف يمكن إضافة معلومات ل 37 00:01:45,635 --> 00:01:49,080 وإزالتها من كومة، وهناك حقا اثنين فقط من الأشياء التي يمكن القيام به مع كومة. 38 00:01:49,080 --> 00:01:52,010 يمكننا أن ندفع، وهو المصطلح الذي نستخدمه لإضافة 39 00:01:52,010 --> 00:01:55,130 عنصر جديد إلى أعلى كومة، أو في حالة عدم وجود كومة 40 00:01:55,130 --> 00:01:58,550 ونحن خلق من العدم، خلق المكدس في المقام الأول 41 00:01:58,550 --> 00:02:00,110 سيكون دفع. 42 00:02:00,110 --> 00:02:04,990 ثم البوب، وهذا النوع من CS المصطلح الذي نستخدمه لإزالة مؤخرا 43 00:02:04,990 --> 00:02:08,330 وأضاف عنصرا من أعلى المكدس. 44 00:02:08,330 --> 00:02:11,130 >> لذلك نحن في طريقنا للبحث في كل تطبيقات، سواء مجموعة تستند 45 00:02:11,130 --> 00:02:13,120 وقائمة مرتبطة القائمة. 46 00:02:13,120 --> 00:02:14,870 ونحن في طريقنا ل تبدأ مع مجموعة مقرها. 47 00:02:14,870 --> 00:02:19,990 لذلك ها هي الفكرة الأساسية لما بنية البيانات كومة مجموعة مقرها 48 00:02:19,990 --> 00:02:21,140 قد تبدو. 49 00:02:21,140 --> 00:02:23,740 لدينا تعريف مكتوب هنا. 50 00:02:23,740 --> 00:02:27,790 داخل ذلك لدينا اثنين من أعضاء أو حقول البنية. 51 00:02:27,790 --> 00:02:29,880 لدينا مجموعة. 52 00:02:29,880 --> 00:02:32,400 ومرة أخرى أنا باستخدام تعسفية قيمة نوع البيانات. 53 00:02:32,400 --> 00:02:35,180 >> ولذلك فإن هذا يمكن أن يكون أي نوع البيانات، شار صحيح أو بعض البيانات الأخرى 54 00:02:35,180 --> 00:02:37,080 اكتب قمت بإنشائه سابقا. 55 00:02:37,080 --> 00:02:39,861 لذلك لدينا مجموعة واسعة من القدرات الحجم. 56 00:02:39,861 --> 00:02:44,010 القدرة يجري رطل تعريف ثابت، ربما في مكان آخر في ملفنا. 57 00:02:44,010 --> 00:02:47,550 لذلك نلاحظ بالفعل مع هذا الخصوص تنفيذ أننا ثاب 58 00:02:47,550 --> 00:02:49,800 أنفسنا كما كان عادة الحال مع المصفوفات، 59 00:02:49,800 --> 00:02:53,170 لا يمكننا تغيير حجم حيوي، حيث هناك عدد معين 60 00:02:53,170 --> 00:02:55,450 عناصر الحد الأقصى الذي يمكن أن نضع في كومة دينا. 61 00:02:55,450 --> 00:02:57,930 في هذه الحالة فإنه من عناصر القدرات. 62 00:02:57,930 --> 00:03:00,310 >> نحن أيضا تتبع الجزء العلوي من كومة. 63 00:03:00,310 --> 00:03:04,350 ما العنصر هو الأكثر وأضاف في الآونة الأخيرة إلى المكدس؟ 64 00:03:04,350 --> 00:03:07,470 ولذا فإننا تتبع ذلك في متغير يسمى القمة. 65 00:03:07,470 --> 00:03:11,692 وكل هذا يحصل ملفوفة معا إلى نوع بيانات جديدة تسمى كومة. 66 00:03:11,692 --> 00:03:13,400 ومرة واحدة ونحن خلقت هذا النوع من البيانات الجديد 67 00:03:13,400 --> 00:03:15,410 يمكننا التعامل معها مثل أي نوع بيانات آخر. 68 00:03:15,410 --> 00:03:20,970 يمكن أن نعلن كومة الصورة، تماما مثل يمكننا أن نفعل الباحث السينية، أو حرف Y. 69 00:03:20,970 --> 00:03:22,990 وعندما نقول كومة الصورة، وأيضا ما يحدث 70 00:03:22,990 --> 00:03:26,420 ونحصل على مجموعة من ذاكرة جانبا بالنسبة لنا. 71 00:03:26,420 --> 00:03:28,770 >> وبهذه الصفة حالة لقد قررت على ما يبدو 72 00:03:28,770 --> 00:03:33,470 10 لأني قد حصلت على متغير واحد من نوع كومة 73 00:03:33,470 --> 00:03:35,320 الذي يحتوي على تذكر حقلين. 74 00:03:35,320 --> 00:03:38,330 مجموعة، في هذه الحالة سوف أن تكون مجموعة من الأعداد الصحيحة 75 00:03:38,330 --> 00:03:40,440 كما هو الحال في معظم الأمثلة التي ذكرتها. 76 00:03:40,440 --> 00:03:43,996 ومتغير عدد صحيح آخر قادر على تخزين القمة، 77 00:03:43,996 --> 00:03:45,870 وأضاف في الآونة الأخيرة عنصر إلى المكدس. 78 00:03:45,870 --> 00:03:50,290 حتى واحد كومة واحدة من ما كنا تعريف فقط يشبه هذا. 79 00:03:50,290 --> 00:03:53,190 انها تحتوي على مربع مجموعة من 10 ما 80 00:03:53,190 --> 00:03:57,280 ستكون صحيحة في هذه الحالة و متغير آخر صحيح هناك في الأخضر 81 00:03:57,280 --> 00:04:00,010 للإشارة إلى الجزء العلوي من كومة. 82 00:04:00,010 --> 00:04:02,600 >> لتعيين أعلى كومة نحن نقول فقط s.top. 83 00:04:02,600 --> 00:04:04,890 هذه هي الطريقة التي الوصول إلى مجال أذكر هيكل. 84 00:04:04,890 --> 00:04:10,460 s.top يساوي 0 بفعالية هل هذا المكدس لدينا. 85 00:04:10,460 --> 00:04:12,960 ذلك مرة أخرى لدينا اثنين من العمليات أننا يمكن أن تؤدي الآن. 86 00:04:12,960 --> 00:04:14,270 يمكننا أن ندفع ونحن يمكن البوب. 87 00:04:14,270 --> 00:04:15,635 دعونا نبدأ مع دفع. 88 00:04:15,635 --> 00:04:18,260 مرة أخرى، ودفع هو إضافة جديدة عنصر إلى أعلى المكدس. 89 00:04:18,260 --> 00:04:21,460 >> فماذا علينا أن نفعل في هذه المجموعة التنفيذ استنادا؟ 90 00:04:21,460 --> 00:04:23,210 كذلك في العام دفع ظيفة يسير 91 00:04:23,210 --> 00:04:26,160 في حاجة إلى قبول مؤشر إلى المكدس. 92 00:04:26,160 --> 00:04:28,610 الآن تأخذ ثانية وتفكر في ذلك. 93 00:04:28,610 --> 00:04:32,840 لماذا نريد لقبول مؤشر إلى المكدس؟ 94 00:04:32,840 --> 00:04:36,830 نذكر من أشرطة الفيديو السابقة على نطاق ومؤشرات متغير، 95 00:04:36,830 --> 00:04:42,350 ماذا سيحدث إذا أرسلنا فقط مكدس، ق بالأحرى في كمعلمة؟ 96 00:04:42,350 --> 00:04:45,770 ما من شأنه في الواقع أن تنتقل إلى هناك؟ 97 00:04:45,770 --> 00:04:49,430 نتذكر أننا بصدد إنشاء نسخة عندما كنا نقله إلى وظيفة 98 00:04:49,430 --> 00:04:51,160 ما لم نستخدم المؤشرات. 99 00:04:51,160 --> 00:04:55,380 وحتى هذه الوظيفة دفع الاحتياجات لقبول مؤشر إلى المكدس 100 00:04:55,380 --> 00:04:59,160 ذلك أننا تغيير الواقع مكدس نعتزم تغيير. 101 00:04:59,160 --> 00:05:03,060 >> دفع الشيء الآخر ربما يريد استعرض عنصرا بيانات القيمة النوع. 102 00:05:03,060 --> 00:05:06,970 في هذه الحالة، مرة أخرى، صحيح أن ونحن في طريقنا لإضافة إلى الجزء العلوي من كومة. 103 00:05:06,970 --> 00:05:08,680 لذلك لدينا لدينا المعلمتين. 104 00:05:08,680 --> 00:05:11,310 ما نحن ذاهبون لل القيام به الآن داخل دفع؟ 105 00:05:11,310 --> 00:05:14,860 حسنا، ببساطة، نحن ذاهبون لمجرد إضافة هذا العنصر إلى أعلى المكدس 106 00:05:14,860 --> 00:05:22,860 ثم قم بتغيير حيث أعلى المكدس، التي ق دوت قيمة أعلى. 107 00:05:22,860 --> 00:05:25,639 لذلك هذا هو ما وظيفة الإعلان عن دفعة 108 00:05:25,639 --> 00:05:27,680 قد تبدو وكأنها في القائم على مجموعة التنفيذ. 109 00:05:27,680 --> 00:05:30,967 >> مرة أخرى هذه ليست قاعدة جامدة وسريعة هل يمكن أن تغيير هذه ولها 110 00:05:30,967 --> 00:05:32,050 انها تختلف في طرق مختلفة. 111 00:05:32,050 --> 00:05:33,840 ربما يتم التصريح الصورة عالميا. 112 00:05:33,840 --> 00:05:36,180 وهكذا لا تحتاج حتى لتمرير أنها كمعلمة. 113 00:05:36,180 --> 00:05:39,125 هذا هو مرة أخرى مجرد الحالة العامة للدفع. 114 00:05:39,125 --> 00:05:41,000 وهناك مختلفة طرق لتنفيذ ذلك. 115 00:05:41,000 --> 00:05:42,810 ولكن في هذه الحالة لدينا دفع على وشك أن يتزوج 116 00:05:42,810 --> 00:05:48,540 حجتين، مؤشر إلى المكدس و عنصر بيانات القيمة نوع، صحيح 117 00:05:48,540 --> 00:05:49,840 في هذه الحالة. 118 00:05:49,840 --> 00:05:52,100 >> لذلك أعلنا الصورة، ونحن وقال s.top يساوي 0. 119 00:05:52,100 --> 00:05:55,969 الآن دعونا دفع عدد 28 إلى المكدس. 120 00:05:55,969 --> 00:05:57,010 حسنا ماذا يعني ذلك؟ 121 00:05:57,010 --> 00:05:59,600 حسنا حاليا أعلى المكدس هو 0. 122 00:05:59,600 --> 00:06:01,350 وهكذا ما هو الأساس سيحدث هو 123 00:06:01,350 --> 00:06:05,820 ونحن في طريقنا إلى التمسك عدد 28 في مجموعة 0 موقع. 124 00:06:05,820 --> 00:06:09,540 واضحة جدا، والحق، أن وكان أعلى ونحن الآن على ما يرام. 125 00:06:09,540 --> 00:06:12,910 ثم نحن بحاجة إلى تغيير ما والجزء العلوي من كومة أن يكون. 126 00:06:12,910 --> 00:06:15,130 لذا في المرة القادمة ندفع عنصرا في، 127 00:06:15,130 --> 00:06:18,017 ونحن في طريقنا لتخزينه في موقع مجموعة، وربما ليست 0. 128 00:06:18,017 --> 00:06:20,100 نحن لا نريد للكتابة ما وضعت للتو هناك. 129 00:06:20,100 --> 00:06:23,510 ولذا فإننا سوف تتحرك فقط الجزء العلوي إلى 1. 130 00:06:23,510 --> 00:06:24,890 التي ربما من المنطقي. 131 00:06:24,890 --> 00:06:28,940 >> الآن إذا أردنا أن وضع عنصر آخر إلى المكدس، ويقول نحن نريد لدفع 33، 132 00:06:28,940 --> 00:06:33,190 كذلك نحن الآن مجرد الذهاب الى اتخاذ 33 ووضعها في مجموعة رقم موقع 133 00:06:33,190 --> 00:06:37,580 1، ثم قم بتغيير رأس لدينا كومة أن تكون مجموعة موقع رقم اثنين. 134 00:06:37,580 --> 00:06:40,650 حتى إذا كان في المرة القادمة نريد ل دفع عنصر إلى المكدس، 135 00:06:40,650 --> 00:06:43,087 انها سوف توضع في مجموعة موقع 2. 136 00:06:43,087 --> 00:06:44,420 ودعونا نفعل ذلك المزيد من مرة واحدة. 137 00:06:44,420 --> 00:06:45,753 سنقوم دفع 19 الخروج من المداخن. 138 00:06:45,753 --> 00:06:48,940 سوف نضع 19 في مجموعة موقع 2 وتغيير الجزء العلوي من كومة دينا 139 00:06:48,940 --> 00:06:51,220 أن تكون مجموعة موقع 3 إذا كان الأمر كذلك فإننا في المرة القادمة 140 00:06:51,220 --> 00:06:54,780 تحتاج إلى جعل دفع نحن على ما يرام. 141 00:06:54,780 --> 00:06:56,980 >> حسنا، هذا ما دفع باختصار. 142 00:06:56,980 --> 00:06:57,830 ماذا عن تفرقع؟ 143 00:06:57,830 --> 00:07:00,240 لذلك ظهرت هو نوع من النظير لدفع. 144 00:07:00,240 --> 00:07:02,720 انها كيف يمكننا إزالة البيانات من المكدس. 145 00:07:02,720 --> 00:07:04,610 واحتياجات البوب ​​العامة للقيام بما يلي. 146 00:07:04,610 --> 00:07:07,600 عليها أن تقبل مؤشر إلى كومة، ومرة ​​أخرى في الحالة العامة. 147 00:07:07,600 --> 00:07:10,480 في بعض الحالات الأخرى التي قد أعلنت مكدس على الصعيد العالمي، 148 00:07:10,480 --> 00:07:13,910 وفي هذه الحالة لا تحتاج لتمريرها في لأنه يحتوي بالفعل الوصول إليها 149 00:07:13,910 --> 00:07:15,541 كمتغير العالمي. 150 00:07:15,541 --> 00:07:17,040 ولكن بعد ذلك ماذا تفعل يتعين علينا القيام به؟ 151 00:07:17,040 --> 00:07:21,000 كذلك كنا تزايد الجزء العلوي من المكدس في دفع، 152 00:07:21,000 --> 00:07:24,050 لذلك نحن ربما تريد الذهاب الى لإنقاص الجزء العلوي من كومة 153 00:07:24,050 --> 00:07:25,009 في موسيقى البوب، أليس كذلك؟ 154 00:07:25,009 --> 00:07:26,800 وبعد ذلك بالطبع نحن أيضا تريد الذهاب 155 00:07:26,800 --> 00:07:29,240 لإرجاع القيمة أننا إزالته. 156 00:07:29,240 --> 00:07:32,125 إذا نحن مضيفا العناصر، ونحن نريد للحصول على العناصر في وقت لاحق على، 157 00:07:32,125 --> 00:07:34,000 ونحن ربما في الواقع تريد تخزينها لذلك نحن 158 00:07:34,000 --> 00:07:36,490 لا مجرد حذفها من كومة ثم لا تفعل شيئا معهم. 159 00:07:36,490 --> 00:07:38,500 عموما إذا نحن دفع وظهرت هنا 160 00:07:38,500 --> 00:07:41,250 نحن نريد لتخزين هذه المعلومات بطريقة ذات مغزى 161 00:07:41,250 --> 00:07:43,250 وذلك لا يجعل بمعنى أن مجرد تجاهل ذلك. 162 00:07:43,250 --> 00:07:46,380 لذلك ينبغي على هذه الوظيفة ربما إرجاع قيمة بالنسبة لنا. 163 00:07:46,380 --> 00:07:51,040 >> لذلك هذا هو ما إعلانا لالبوب قد تبدو وكأنها هناك في أعلى اليسار. 164 00:07:51,040 --> 00:07:53,870 هذه ترجع الدالة بيانات القيمة النوع. 165 00:07:53,870 --> 00:07:56,320 مرة أخرى كنا باستخدام الأعداد الصحيحة طوال الوقت. 166 00:07:56,320 --> 00:08:01,916 ويقبل مؤشر إلى كومة كما الحجة الوحيدة، أو المعلمة وحيد. 167 00:08:01,916 --> 00:08:03,040 فما هو البوب ​​تنوي القيام به؟ 168 00:08:03,040 --> 00:08:07,990 دعونا نقول أننا نريد الآن البوب ​​عنصرا الخروج من الصورة. 169 00:08:07,990 --> 00:08:14,000 لذلك تذكر قلت أن الأكوام مشاركة في، لأول مرة، وهياكل البيانات LIFO. 170 00:08:14,000 --> 00:08:17,855 العنصر الذي هو ذاهب ل يمكن إزالتها من المكدس؟ 171 00:08:17,855 --> 00:08:21,780 172 00:08:21,780 --> 00:08:24,150 هل اعتقد 19؟ 173 00:08:24,150 --> 00:08:25,290 لأنك كنت على حق. 174 00:08:25,290 --> 00:08:28,836 19 كان العنصر الأخير أضفنا إلى كومة عندما كنا دفع العناصر على، 175 00:08:28,836 --> 00:08:31,210 وذلك يحدث لأول العنصر الذي يحصل على إزالتها. 176 00:08:31,210 --> 00:08:34,780 كما لو قلنا 28، و ثم وضعنا 33 على أعلى من ذلك، 177 00:08:34,780 --> 00:08:36,659 ونضع 19 على رأس ذلك. 178 00:08:36,659 --> 00:08:40,650 العنصر الوحيد الذي يمكن أن تقلع هو 19. 179 00:08:40,650 --> 00:08:45,019 >> الآن في الرسم البياني هنا ما فعلته هو نوع من حذف 19 من المصفوفة. 180 00:08:45,019 --> 00:08:46,810 هذا ليس واقعيا ما نحن في طريقنا للقيام به. 181 00:08:46,810 --> 00:08:48,934 نحن ذاهبون لمجرد نوع من يدعي أنه ليس هناك. 182 00:08:48,934 --> 00:08:51,441 انها لا تزال هناك في هذا الموقع الذاكرة، 183 00:08:51,441 --> 00:08:54,190 لكننا ذاهبون لمجرد تجاهله عن طريق تغيير الجزء العلوي من كومة دينا 184 00:08:54,190 --> 00:08:56,080 من كونها 3-2. 185 00:08:56,080 --> 00:08:58,720 حتى لو كنا لدفع الآن عنصر آخر إلى المكدس، 186 00:08:58,720 --> 00:09:00,720 فإنه سيكتب أكثر من 19. 187 00:09:00,720 --> 00:09:03,990 >> ولكن دعونا لا تذهب من خلال عناء حذف 19 من المكدس. 188 00:09:03,990 --> 00:09:05,830 يمكننا أن نتظاهر فقط لم يكن هناك. 189 00:09:05,830 --> 00:09:11,107 لأغراض كومة انها ذهبت إذا نغير أعلى لتكون 2 بدلا من 3. 190 00:09:11,107 --> 00:09:12,690 كل الحق، حتى أن كان الى حد كبير. 191 00:09:12,690 --> 00:09:15,080 هذا كل ما عليك القيام به لموسيقى البوب ​​عنصر خارج. 192 00:09:15,080 --> 00:09:16,090 دعونا نفعل ذلك مرة أخرى. 193 00:09:16,090 --> 00:09:18,610 حتى لقد تمييزه باللون الأحمر هنا ل تشير إلى أننا نحرز مكالمة أخرى. 194 00:09:18,610 --> 00:09:19,720 ونحن في طريقنا للقيام بنفس الشيء. 195 00:09:19,720 --> 00:09:20,803 >> فما الذي سيحدث؟ 196 00:09:20,803 --> 00:09:23,670 حسنا، نحن ذاهبون لتخزين 33 في العاشر ونحن في طريقنا 197 00:09:23,670 --> 00:09:26,217 لتغيير الجزء العلوي من كومة إلى 1. 198 00:09:26,217 --> 00:09:29,050 بحيث إذا كنا الآن لدفع ل عنصر في كومة التي نحن 199 00:09:29,050 --> 00:09:31,610 تنوي القيام به في الوقت الراهن، ماذا سيحدث 200 00:09:31,610 --> 00:09:36,367 ونحن في طريقنا الكتابة الفوقية مجموعة موقع رقم 1. 201 00:09:36,367 --> 00:09:38,950 ذلك أن 33 التي كانت نوعا من اليسار وراء ذلك نحن تظاهرت فقط 202 00:09:38,950 --> 00:09:44,390 ليس هناك بعد الآن، ونحن ذاهبون فقط لهزم ووضعها هناك 40 بدلا من ذلك. 203 00:09:44,390 --> 00:09:46,290 وبعد ذلك بالطبع، منذ قدمنا ​​دفعة، 204 00:09:46,290 --> 00:09:48,780 ونحن في طريقنا إلى زيادة في أعلى المكدس 1-2 205 00:09:48,780 --> 00:09:50,950 بحيث إذا نحن الآن إضافة عنصر آخر أنها سوف 206 00:09:50,950 --> 00:09:54,700 انتقل إلى مجموعة موقع رقم اثنين. 207 00:09:54,700 --> 00:09:57,590 >> الآن القوائم المرتبطة هي آخر طريقة لتنفيذ رزمة. 208 00:09:57,590 --> 00:10:01,210 وإذا كان هذا التعريف على الشاشة هنا تبدو مألوفة بالنسبة لك، 209 00:10:01,210 --> 00:10:04,260 ذلك لأنه يبدو تقريبا بالضبط نفس الشيء، في الواقع، 210 00:10:04,260 --> 00:10:07,790 انها الى حد كبير هو بالضبط نفس قائمة مرتبطة منفردة، 211 00:10:07,790 --> 00:10:11,990 إذا كنت تذكر من مناقشتنا ل القوائم المرتبطة منفردة في فيديو آخر. 212 00:10:11,990 --> 00:10:15,510 والقيد الوحيد هنا هو بالنسبة لنا والمبرمجين، 213 00:10:15,510 --> 00:10:17,900 نحن لا يسمح لل إدراج أو حذف عشوائيا 214 00:10:17,900 --> 00:10:20,620 من القائمة المرتبطة منفردة الذي يمكننا القيام به سابقا. 215 00:10:20,620 --> 00:10:25,820 يمكننا الآن سوى إدراج وحذف من الجبهة أو أعلى مرتبطة 216 00:10:25,820 --> 00:10:26,320 القائمة. 217 00:10:26,320 --> 00:10:28,028 هذا هو حقا فقط الفرق بالرغم من ذلك. 218 00:10:28,028 --> 00:10:29,700 هذا هو خلاف ذلك قائمة مرتبطة منفردة. 219 00:10:29,700 --> 00:10:32,060 انها فقط التقييد استبدال على أنفسنا 220 00:10:32,060 --> 00:10:35,770 كما أن المبرمجين يتغير قبل أن تتحول إلى كومة. 221 00:10:35,770 --> 00:10:39,280 >> القاعدة هنا هي أن تحافظ دائما على المؤشر إلى رأس قائمة مرتبطة. 222 00:10:39,280 --> 00:10:41,520 هذا هو بالطبع عموما قاعدة مهمة لأول مرة. 223 00:10:41,520 --> 00:10:44,260 لقائمة مرتبطة منفردة على أي حال كنت تحتاج مؤشر فقط في الرأس 224 00:10:44,260 --> 00:10:46,160 من أجل أن يكون هذا سلسلة تكون قادرة على الرجوع 225 00:10:46,160 --> 00:10:48,596 إلى كل عنصر آخر في القائمة المرتبطة. 226 00:10:48,596 --> 00:10:50,470 ولكن هذا لا سيما المهم مع كومة. 227 00:10:50,470 --> 00:10:52,386 وهكذا عموما كنت تريد الذهاب الى الواقع 228 00:10:52,386 --> 00:10:54,090 هذا مؤشر على أن يكون المتغير العالمي. 229 00:10:54,090 --> 00:10:56,574 انه سيكون على الارجح الى حتى يكون أسهل بهذه الطريقة. 230 00:10:56,574 --> 00:10:58,240 فما هي النظير من الشد والبوب؟ 231 00:10:58,240 --> 00:10:58,740 الصحيح. 232 00:10:58,740 --> 00:11:01,812 لذلك دفع مرة أخرى يضيف عنصر جديد إلى المكدس. 233 00:11:01,812 --> 00:11:03,770 في قائمة مرتبط يعني أننا ذاهبون لدينا 234 00:11:03,770 --> 00:11:07,770 لإنشاء عقدة جديدة نحن الذهاب لإضافة إلى القائمة المرتبطة، 235 00:11:07,770 --> 00:11:10,500 ثم اتبع الخطوات المتأنية أن قمنا بوضع سابقا 236 00:11:10,500 --> 00:11:16,050 في القوائم المرتبطة منفردة لإضافته إلى سلسلة دون كسر سلسلة 237 00:11:16,050 --> 00:11:18,900 وفقدان أو اليتم أي عناصر القائمة المرتبطة. 238 00:11:18,900 --> 00:11:21,820 وهذا أساسا ما أن فقاعة صغيرة من النص يلخص هناك. 239 00:11:21,820 --> 00:11:23,740 ودعونا نلقي نظرة في ذلك كما رسم تخطيطي. 240 00:11:23,740 --> 00:11:24,823 >> حتى هنا قائمة مرتبطة لدينا. 241 00:11:24,823 --> 00:11:26,620 أنه يحتوي على أربعة عناصر في نفس الوقت. 242 00:11:26,620 --> 00:11:30,420 وأكثر تماما هنا لدينا كومة التي تحتوي على أربعة عناصر. 243 00:11:30,420 --> 00:11:36,030 ودعونا نقول أننا نريد الآن ل دفع بند جديد على هذا المكدس. 244 00:11:36,030 --> 00:11:39,792 ونحن نريد أن دفع جديد البند قيمتها البيانات هو 12. 245 00:11:39,792 --> 00:11:41,000 حسنا ماذا نحن فاعلون؟ 246 00:11:41,000 --> 00:11:43,420 حسنا أولا نحن في طريقنا لل مساحة malloc، حيوي 247 00:11:43,420 --> 00:11:45,411 تخصيص مساحة لعقدة جديدة. 248 00:11:45,411 --> 00:11:48,160 وبالطبع فور نحن إجراء مكالمة إلى malloc نحن دائما 249 00:11:48,160 --> 00:11:52,989 تأكد من التحقق من وجود باطل، لأنه إذا وصلنا لاغية العودة 250 00:11:52,989 --> 00:11:54,280 كان هناك نوع من المشكلة. 251 00:11:54,280 --> 00:11:57,570 نحن لا نريد أن dereference أن اغية سوف المؤشر أو كنت تعاني من خطأ ثوانى. 252 00:11:57,570 --> 00:11:58,510 هذا ليس جيدا. 253 00:11:58,510 --> 00:11:59,760 لذلك قمنا malloced من العقدة. 254 00:11:59,760 --> 00:12:01,260 سوف نفترض لدينا النجاح هنا. 255 00:12:01,260 --> 00:12:06,090 ونحن في طريقنا إلى وضع 12 في حقل البيانات من تلك العقدة. 256 00:12:06,090 --> 00:12:11,570 الآن هل يتذكر أي من المؤشرات لدينا الخطوات المقبلة لذلك نحن لا كسر السلسلة؟ 257 00:12:11,570 --> 00:12:15,100 لدينا عدة خيارات هنا ولكن الوحيد الذي سيكون آمنة 258 00:12:15,100 --> 00:12:19,330 هو وضع الأخبار المؤشر بجانب نقطة في الرأس القديم من القائمة 259 00:12:19,330 --> 00:12:21,360 أو ماذا سيكون قريبا رئيس القديم من القائمة. 260 00:12:21,360 --> 00:12:23,610 والآن بعد أن كل من سلسلت العناصر معا، 261 00:12:23,610 --> 00:12:27,370 يمكننا فقط نقل قائمة إلى نقطة إلى نفس المكان الذي يفعل جديدة. 262 00:12:27,370 --> 00:12:33,550 ونحن لدينا الآن دفعت فعليا عنصر جديد على الجزء الأمامي من المكدس. 263 00:12:33,550 --> 00:12:36,420 >> لموسيقى البوب ​​ونحن نريد فقط ل حذف هذا العنصر الأول. 264 00:12:36,420 --> 00:12:38,150 وذلك أساسا ما يتعين علينا القيام به هنا، 265 00:12:38,150 --> 00:12:40,050 كذلك علينا أن نجد العنصر الثاني. 266 00:12:40,050 --> 00:12:43,540 في نهاية المطاف التي ستصبح الجديد يتوجه بعد أن حذف أول واحد. 267 00:12:43,540 --> 00:12:47,300 لذلك نحن بحاجة فقط لتبدأ من بداية، خطوة واحدة إلى الأمام. 268 00:12:47,300 --> 00:12:50,340 مرة واحدة لقد حصلت على عقد على واحدة إلى الأمام من حيث نحن حاليا 269 00:12:50,340 --> 00:12:53,850 نحن يمكن حذف أول واحد بأمان وبعد ذلك يمكننا فقط نقل رئيس 270 00:12:53,850 --> 00:12:57,150 للإشارة إلى ما كان ولاية ثانية ثم الآن 271 00:12:57,150 --> 00:12:59,170 هو الأول بعد أن لقد تم حذف العقدة. 272 00:12:59,170 --> 00:13:01,160 >> ذلك مرة أخرى، مع نظرة في ذلك كما رسم تخطيطي نحن 273 00:13:01,160 --> 00:13:05,022 تريد لموسيقى البوب ​​الآن العنصر الخروج من هذا المكدس. 274 00:13:05,022 --> 00:13:05,730 فماذا نفعل؟ 275 00:13:05,730 --> 00:13:08,188 حسنا نحن أولا الذهاب الى خلق مؤشر الجديد الذي يجري 276 00:13:08,188 --> 00:13:10,940 للإشارة إلى نفس المكان رئيسا. 277 00:13:10,940 --> 00:13:13,790 ونحن في طريقنا لنقلها موقف واحد إلى الأمام بالقول متساوين بالسفر 278 00:13:13,790 --> 00:13:17,510 بالسفر المقبل على سبيل المثال، والتي من شأنها دفع مؤشر بالسفر واحد 279 00:13:17,510 --> 00:13:19,324 موقف الأمام. 280 00:13:19,324 --> 00:13:21,240 والآن بعد أن حصلنا على الاستمرار على العنصر الأول 281 00:13:21,240 --> 00:13:24,573 من خلال مؤشر يسمى القائمة، و العنصر الثاني من خلال مؤشر يسمى 282 00:13:24,573 --> 00:13:28,692 بالسفر، ونحن يمكن حذفها بأمان أن العنصر الأول من المكدس 283 00:13:28,692 --> 00:13:30,650 دون أن تفقد بقية من سلسلة لأننا 284 00:13:30,650 --> 00:13:32,358 لديك وسيلة للإشارة إلى العنصر الثاني 285 00:13:32,358 --> 00:13:34,780 إلى الأمام عن طريق ل دعا مؤشر بالسفر. 286 00:13:34,780 --> 00:13:37,100 >> وحتى الآن نستطيع أن نحرر هذه العقدة. 287 00:13:37,100 --> 00:13:38,404 يمكننا أن القائمة تحرير. 288 00:13:38,404 --> 00:13:41,320 وبعد ذلك كل ما نحتاج أن نفعله الآن هو قائمة الانتقال للإشارة إلى نفس المكان 289 00:13:41,320 --> 00:13:44,482 أن بالسفر لا، ونحن نوع من الخلف حيث بدأنا قبل أن دفعت 12 290 00:13:44,482 --> 00:13:45,690 على في المقام الأول، والحق. 291 00:13:45,690 --> 00:13:46,940 وهذا هو بالضبط ما كنا عليه. 292 00:13:46,940 --> 00:13:48,840 كان لدينا هذا العنصر أربعة المكدس. 293 00:13:48,840 --> 00:13:49,690 أضفنا الخامس. 294 00:13:49,690 --> 00:13:51,910 دفعنا خمس عنصر على، ومن ثم نحن 295 00:13:51,910 --> 00:13:55,980 برزت في الآونة الأخيرة أن معظم وأضاف العنصر التراجع. 296 00:13:55,980 --> 00:13:58,816 >> هذا هو حقا الى حد كبير كل ما في المداخن. 297 00:13:58,816 --> 00:14:00,190 يمكنك تنفيذها في المصفوفات. 298 00:14:00,190 --> 00:14:01,815 يمكنك تنفيذها في القوائم المرتبطة. 299 00:14:01,815 --> 00:14:04,810 هناك، بطبيعة الحال، وغيرها طرق لتنفيذها كذلك. 300 00:14:04,810 --> 00:14:09,060 في الأساس السبب سوف نستخدم مداخن هو الحفاظ على البيانات في مثل هذه الطريقة 301 00:14:09,060 --> 00:14:12,090 وأضاف أن معظم مؤخرا العنصر هو أول شيء نحن 302 00:14:12,090 --> 00:14:14,980 تريد الذهاب الى الحصول على العودة. 303 00:14:14,980 --> 00:14:17,900 أنا دوغ ويد، وهذا هو cs50. 304 00:14:17,900 --> 00:14:19,926