DOUG LLOYD: สิทธิทั้งหมด ดังนั้นจากจุดที่คุณอยู่นี้
อาจจะค่อนข้างคุ้นเคย กับอาร์เรย์และรายการที่เชื่อมโยง
ซึ่งเป็นสองหลัก โครงสร้างข้อมูลที่เราได้
พูดคุยเกี่ยวกับการรักษาชุด ข้อมูลของชนิดข้อมูลที่คล้ายกันจัด
>> ตอนนี้เรากำลังจะไปพูดคุย เกี่ยวกับคู่ของรูปแบบ
บนอาร์เรย์และรายการที่เชื่อมโยง
ในวิดีโอนี้เรากำลังจะ พูดคุยเกี่ยวกับสแต็ค
โดยเฉพาะที่เรากำลังจะพูดคุย เกี่ยวกับโครงสร้างข้อมูลที่เรียกว่ากอง
การเรียกคืนจากการอภิปรายก่อนหน้านี้ เกี่ยวกับตัวชี้และหน่วยความจำ
ที่กองยังเป็น ชื่อสำหรับส่วนของหน่วยความจำ
ที่ประกาศแบบคงที่ หน่วยความจำที่คุณ memory--
ชื่อตัวแปรที่คุณชื่อ, และ ฯลฯ และกรอบการทำงานที่เรายัง
โทรเฟรมสแต็คที่มีอยู่
ดังนั้นนี่คือโครงสร้างข้อมูลสแต็ค ไม่ได้เป็นส่วนที่สแต็คของหน่วยความจำ
ตกลง.
>> แต่สิ่งที่เป็นกอง?
ดังนั้นจึงเป็นที่สวยมากเพียง ชนิดพิเศษของโครงสร้าง
ที่เก็บข้อมูลในทางที่จัด
และมีสองมาก วิธีการทั่วไปที่จะใช้
กองการใช้สองโครงสร้างข้อมูล ที่เราคุ้นเคยกับ
อาร์เรย์และรายการที่เชื่อมโยง
สิ่งที่ทำให้พิเศษสแต็คเป็น วิธีการที่เราใส่ข้อมูล
เข้าไปในกองและวิธีการที่พวกเราทุกคน เอาข้อมูลจากกอง
โดยเฉพาะอย่างยิ่งกับกอง การปกครองเป็นเพียงมากที่สุด
องค์ประกอบเพิ่มเมื่อเร็ว ๆ นี้สามารถถอดออกได้
>> ดังนั้นคิดเกี่ยวกับมันราวกับว่ามันเป็นกอง
เรากำลังซ้อนข้อมูล ด้านบนของตัวเอง
และมีเพียงสิ่งที่อยู่ด้านบน ของกองสามารถถอดออกได้
เราไม่สามารถเอาสิ่งที่อยู่ภายใต้ เพราะทุกอย่างอื่นจะ
ยุบและลดลงกว่า
ดังนั้นเราจะสร้างสแต็คที่ เราก็ต้องเอาชิ้นโดยชิ้น
ด้วยเหตุนี้เรามักอ้างถึง ไปยังกองเป็นโครงสร้าง LIFO ที่
สุดท้ายในออกมาเป็นครั้งแรก
LIFO, สุดท้ายในครั้งแรกออกมา
>> ดังนั้นเนื่องจากข้อ จำกัด เกี่ยวกับเรื่องนี้ วิธีการที่ข้อมูลสามารถเพิ่ม
และลบออกจากกองมีจริงๆ เพียงสองสิ่งที่เราสามารถทำอะไรกับกอง
เราสามารถผลักดันซึ่งเป็น คำที่เราใช้สำหรับการเพิ่ม
องค์ประกอบใหม่ในด้านบนของ สแต็คหรือถ้ากองไม่ได้อยู่
และเรากำลังสร้างมันจากรอยขีดข่วน การสร้างสแต็คในสถานที่แรก
จะผลักดัน
และจากนั้นปรากฏว่าการจัดเรียงของซี คำที่เราใช้ในการลบเมื่อเร็ว ๆ นี้
องค์ประกอบที่เพิ่มมาจากด้านบนของสแต็ค
>> ดังนั้นเราจะไปดูที่ทั้งสอง การใช้งานอาร์เรย์ทั้งตาม
และรายการที่เชื่อมโยงตาม
และเรากำลังจะไป เริ่มต้นด้วยอาร์เรย์ตาม
ดังนั้นนี่คือความคิดพื้นฐานของสิ่งที่ อาร์เรย์ตามโครงสร้างข้อมูลสแต็ค
จะมีลักษณะ
ขณะนี้มีความหมายที่พิมพ์ที่นี่
ภายในการที่เรามีสองสมาชิก หรือสาขาของโครงสร้าง
เรามีอาร์เรย์
และอีกครั้งที่ผมใช้ ค่าชนิดข้อมูลโดยพลการ
>> ดังนั้นนี่อาจจะเป็นชนิดข้อมูลใด ๆ ถ่าน int หรือข้อมูลอื่น ๆ
คุณพิมพ์ไว้ก่อนหน้านี้
ดังนั้นเราจึงมีอาร์เรย์ของความจุขนาด
ความจุปอนด์ถูกกำหนดไว้อย่างต่อเนื่อง บางทีอาจจะเป็นที่อื่นในแฟ้มของเรา
สังเกตเห็นดังนั้นแล้วกับนี้โดยเฉพาะ การดำเนินงานที่เรากำลังวิ่ง
ตัวเองเป็นโดยทั่วไปแล้ว กรณีที่มีอาร์เรย์
ซึ่งเราไม่สามารถปรับขนาดแบบไดนามิก, ที่มีจำนวนหนึ่ง
ขององค์ประกอบสูงสุดที่ เราสามารถใส่ในกองของเรา
ในกรณีนี้มันเป็นองค์ประกอบความจุ
>> นอกจากนี้เรายังติดตาม ด้านบนของสแต็ค
องค์ประกอบอะไรคือสิ่งที่มากที่สุด เมื่อเร็ว ๆ นี้เพิ่มเข้าไปในกอง?
และเพื่อให้เราติดตามว่า ในตัวแปรที่เรียกว่าด้านบน
และทั้งหมดนี้ได้รับการห่อขึ้นร่วมกัน เป็นชนิดข้อมูลใหม่ที่เรียกว่ากอง
และเมื่อเรากำลังสร้างขึ้น ชนิดข้อมูลใหม่นี้
เราสามารถรักษามันเช่น ชนิดข้อมูลอื่น ๆ
เราสามารถประกาศของสแต็คเช่นเดียวกับ เราสามารถทำ int x, y ที่หรือถ่าน
และเมื่อเราบอกว่าสแต็ค ของดีสิ่งที่เกิดขึ้น
คือการที่เราได้รับชุดของ หน่วยความจำการตั้งสำรองสำหรับเรา
>> ในฐานะกรณีนี้ ฉันได้ตัดสินใจที่เห็นได้ชัด
10 เพราะฉันมี ตัวแปรเดียวของสแต็คประเภท
ซึ่งมีสองช่องจำ
อาร์เรย์ในกรณีนี้เป็นไป จะเป็นอาร์เรย์ของจำนวนเต็ม
เป็นกรณีที่ในส่วนของตัวอย่างของฉัน
และตัวแปรจำนวนเต็มอีก ความสามารถในการจัดเก็บด้านบน
เพิ่มเมื่อเร็ว ๆ นี้ องค์ประกอบกอง
ดังนั้นหนึ่งกองเดียวของสิ่งที่เรา เพียงแค่รูปลักษณ์ที่กำหนดไว้เช่นนี้
มันเป็นกล่องที่มี อาร์เรย์ของ 10 สิ่งที่
จะเป็นจำนวนเต็มในกรณีนี้และ ตัวแปรจำนวนเต็มอื่นมีสีเขียว
เพื่อแสดงให้เห็นด้านบนของสแต็ค
>> การตั้งค่าด้านบนของ กองเราก็บอกว่า s.top
นั่นคือวิธีการที่เราเข้าถึง ด้านการเรียกคืนโครงสร้าง
s.top เท่ากับ 0 ได้อย่างมีประสิทธิภาพ ทำอย่างนี้ไปยังกองของเรา
ดังนั้นอีกครั้งเรามีสองการดำเนินงาน ที่เราจะได้ดำเนินการในขณะนี้
เราสามารถผลักดันและเราสามารถปรากฏ
ขอเริ่มต้นด้วยการผลักดัน
อีกครั้งผลักดันคือการเพิ่มใหม่ องค์ประกอบที่ด้านบนสุดของสแต็ค
>> ดังนั้นสิ่งที่เราทำต้องทำ อาร์เรย์นี้การดำเนินงานตาม?
ดีในทั่วไป ฟังก์ชั่นการผลักดันที่เกิดขึ้น
ต้องยอมรับ ตัวชี้ไปยังกอง
ตอนนี้ใช้เวลาสองและคิดเกี่ยวกับมัน
ทำไมเราจะต้องการที่จะยอมรับ ตัวชี้ไปยังกองหรือไม่?
การเรียกคืนจากวิดีโอก่อนหน้านี้ ขอบเขตตัวแปรและตัวชี้
สิ่งที่จะเกิดขึ้นถ้าเราเพิ่งส่ง สแต็ค, s ค่อนข้างเป็นพารามิเตอร์?
สิ่งที่จริงจะถูกส่งผ่านไปในที่นั่น?
จำได้ว่าเรากำลังสร้างสำเนา เมื่อเราผ่านไปยังฟังก์ชั่น
ถ้าเราใช้ตัวชี้
และเพื่อให้ฟังก์ชันนี้จะผลักดันความต้องการ ที่จะยอมรับตัวชี้ไปยังกองที่
เพื่อที่เราจะเปลี่ยนจริง สแต็คเราตั้งใจที่จะเปลี่ยน
>> ผลักดันสิ่งอื่น ๆ ที่อาจจะต้องการที่จะ ยอมรับเป็นองค์ประกอบของข้อมูลที่มีค่าชนิด
ในกรณีนี้อีกครั้งจำนวนเต็มว่า เรากำลังจะเพิ่มไปยังด้านบนของสแต็ค
ดังนั้นเราจึงได้มีพารามิเตอร์ที่สองของเรา
สิ่งที่เราจะไป ตอนนี้ทำภายในของการผลักดัน?
ดีเพียงแค่เราเพียงแค่จะเพิ่ม องค์ประกอบที่ด้านบนของสแต็ค
แล้วเปลี่ยนที่ด้านบนของ สแต็คเป็นที่ s จุดมูลค่าด้านบน
ดังนั้นนี่คือสิ่งที่ฟังก์ชั่น ประกาศสำหรับการผลักดัน
อาจมีลักษณะเช่นใน การดำเนินการตามอาร์เรย์
>> ครั้งนี้ไม่ได้เป็นกฎอย่างหนักและรวดเร็ว ที่คุณอาจมีการเปลี่ยนแปลงนี้และมี
มันแตกต่างกันไปในรูปแบบที่แตกต่างกัน
บางทีอาจจะมีการประกาศของทั่วโลก
และเพื่อให้คุณไม่จำเป็นต้อง ที่จะผ่านมันเป็นพารามิเตอร์
นี่เป็นอีกครั้งเพียง กรณีทั่วไปสำหรับการผลักดัน
และมีความแตกต่างกัน วิธีการที่จะใช้มัน
แต่ในกรณีนี้ของเรา ผลักดันจะใช้
สองอาร์กิวเมนต์ตัวชี้ไปยังกองและ องค์ประกอบของค่าข้อมูลชนิดจำนวนเต็ม
ในกรณีนี้.
>> ดังนั้นเราจึงประกาศของเรา กล่าวว่า s.top เท่ากับ 0
ตอนนี้ขอผลักดัน หมายเลข 28 บนสแต็ค
ดีสิ่งที่หมายความว่า?
ดีในปัจจุบัน ด้านบนของสแต็คเป็น 0
และเพื่อให้สิ่งที่เป็นพื้น ที่จะเกิดขึ้นคือ
เรากำลังจะไปติดจำนวน 28 ในสถานที่อาร์เรย์ 0
ตรงไปตรงสวยขวาที่ ด้านบนและตอนนี้เราก็จะดีไป
และจากนั้นเราต้องเปลี่ยนสิ่งที่ ด้านบนของสแต็คจะเป็น
เพื่อที่ว่าในครั้งต่อไป เราผลักดันองค์ประกอบในการ
เรากำลังจะไปเก็บไว้ใน สถานที่ตั้งของอาเรย์อาจจะไม่ 0
เราไม่ต้องการที่จะเขียนทับ สิ่งที่เราเพียงแค่ใส่มี
ดังนั้นเราก็จะย้ายไปที่ด้านบน 1
ที่อาจจะทำให้ความรู้สึก
>> ตอนนี้ถ้าเราต้องการที่จะนำองค์ประกอบอื่น ลงบนกองบอกว่าเราต้องการที่จะผลักดัน 33,
ดีตอนนี้เราก็จะใช้เวลา 33 และวางไว้ที่บ้านเลขที่ที่ตั้งอาร์เรย์
1 แล้วเปลี่ยนด้านบนของของเรา สแต็คเป็นหมายเลขที่ตั้งสองแถว
ดังนั้นถ้าครั้งต่อไปที่เราต้องการ ผลักดันเป็นองค์ประกอบบนกอง
มันจะถูกวางในตำแหน่งอาร์เรย์ 2
และให้ทำเช่นนั้นอีกครั้งหนึ่ง
เราจะผลักดัน 19 ออกจากกอง
เราจะใส่ 19 ในตำแหน่งอาร์เรย์ 2 และการเปลี่ยนแปลงด้านบนของสแต็คของเรา
จะเป็นสถานที่ตั้งของอาร์เรย์ 3 ดังนั้นหากเวลาที่เราต่อไป
ต้องการที่จะทำให้การผลักดันเราจะดีไป
>> ตกลงดังนั้นที่ผลักดันสั้น
สิ่งที่เกี่ยวกับ popping?
ดังนั้น popping คือการจัดเรียงของ คู่ที่จะผลักดัน
มันเป็นวิธีการที่เราเอาข้อมูลจากกอง
และในความต้องการของป๊อปทั่วไป จะทำอย่างไรต่อไป
จะต้องมีการยอมรับการชี้ไปที่ กองอีกครั้งในกรณีทั่วไป
ในบางกรณีอื่น ๆ ที่คุณอาจจะ ได้ประกาศกองทั่วโลก
ซึ่งในกรณีที่คุณไม่จำเป็นต้องที่จะผ่านมัน เพราะมันมีอยู่แล้วการเข้าถึงได้
เป็นตัวแปรทั่วโลก
แต่แล้วสิ่งที่คนอื่นเราจะต้องทำอย่างไร
ดีที่เราได้รับการเพิ่ม ด้านบนของสแต็คในการผลักดันให้
ดังนั้นเราอาจจะต้องการ การพร่องด้านบนของสแต็ค
ป๊อปใช่มั้ย?
และแล้วแน่นอน เรายังจะต้องการ
เพื่อกลับค่าที่เราลบ
ถ้าเราเพิ่มองค์ประกอบที่เราต้องการ องค์ประกอบที่จะได้รับออกมาในภายหลัง
เราอาจจะจริง ต้องการที่จะเก็บไว้เพื่อให้เรา
ไม่เพียงแค่ลบออกจาก สแต็คและจากนั้นทำอะไรกับพวกเขา
โดยทั่วไปถ้าเรา ผลักดันและ popping ที่นี่
เราต้องการที่จะเก็บนี้ ข้อมูลในทางความหมาย
และดังนั้นจึงไม่ได้ทำให้ เพียงความรู้สึกที่จะทิ้งมัน
ดังนั้นฟังก์ชั่นนี้ควร อาจจะคืนค่าให้กับเรา
>> ดังนั้นนี่คือสิ่งที่ประกาศป๊อป อาจมีลักษณะเหมือนมีที่ด้านบนซ้าย
นี้กลับมาทำงาน ข้อมูลค่าชนิด
อีกครั้งที่เราได้ใช้ จำนวนเต็มตลอด
และยอมรับตัวชี้ไปยังสแต็คในฐานะ อาร์กิวเมนต์ แต่เพียงผู้เดียวหรือพารามิเตอร์ แต่เพียงผู้เดียว
ดังนั้นสิ่งที่ป๊อปจะทำอย่างไร
สมมติว่าเราต้องการตอนนี้ ปรากฏองค์ประกอบออกจาก s
ดังนั้นจำผมบอกว่าที่ผ่านมาเป็นกอง ในครั้งแรกออก LIFO โครงสร้างข้อมูล
ซึ่งองค์ประกอบที่เป็นไปได้ ถูกลบออกจากกอง?
คุณคิดว่า 19?
เพราะคุณต้องการจะขวา
19 เป็นองค์ประกอบสุดท้ายที่เราเพิ่มให้กับ สแต็คเมื่อเราได้ผลักดันองค์ประกอบบน
และมันจะเป็นครั้งแรก องค์ประกอบที่ได้รับการถอดออก
มันเหมือนกับว่าเรากล่าวว่าวันที่ 28 และ แล้วเราใส่ 33 ด้านบนของมัน
และเราใส่ 19 ด้านบนของที่
องค์ประกอบเดียวที่เราสามารถนำออกคือ 19
>> ตอนนี้ในแผนภาพที่นี่สิ่งที่ผมทำ มีการเรียงลำดับของการลบ 19 จากอาร์เรย์
ที่ไม่จริง สิ่งที่เรากำลังจะทำ
เรากำลังจะไปชนิด ของแสร้งทำเป็นว่ามันไม่ได้มี
ก็ยังคงมีใน สถานที่ตั้งของหน่วยความจำที่
แต่เรากำลังจะไม่สนใจมัน โดยการเปลี่ยนแปลงด้านบนของสแต็คของเรา
จากการเป็น 3-2
ดังนั้นถ้าเราจะผลักดันในขณะนี้ องค์ประกอบอื่นบนกอง
มันมากกว่าจะเขียน 19
>> แต่ขอไม่ผ่านปัญหา การลบ 19 จากกอง
เราก็สามารถแสร้งทำเป็นว่ามันไม่ได้มี
สำหรับวัตถุประสงค์ของกองมันหายไปถ้า เราเปลี่ยนด้านบนจะเป็น 2 แทน 3
สิทธิทั้งหมดเพื่อให้เป็นที่สวยมาก
นั่นคือทั้งหมดที่เราต้องทำ องค์ประกอบที่จะปรากฏออกมา
มาทำกันอีกครั้งเถอะ.
ดังนั้นผมจึงได้เน้นในสีแดงที่นี่เพื่อ บ่งชี้ว่าเรากำลังทำสายอื่น
เรากำลังจะทำสิ่งเดียวกัน
>> ดังนั้นสิ่งที่จะเกิดขึ้น?
ดีที่เรากำลังจะไปเก็บ 33 x และเรากำลังจะ
การเปลี่ยนแปลงด้านบนของสแต็ค 1
เพื่อที่ว่าถ้าเราอยู่ในขณะนี้ที่จะผลักดัน องค์ประกอบเข้าสแต็คที่เรากำลัง
จะทำในขณะนี้ สิ่งที่จะเกิดขึ้น
คือเรากำลังจะเขียนทับ สถานที่ตั้งจำนวน 1 อาร์เรย์
ดังนั้นที่ 33 ที่เหลือการเรียงลำดับของ ที่อยู่เบื้องหลังการที่เราแกล้งทำเป็นเพียง
ไม่ได้มีอีกต่อไปเราก็จะ ที่จะบังคับมันและทำให้มี 40 แทน
และแล้วแน่นอน ตั้งแต่ที่เราทำผลักดัน
เรากำลังจะเพิ่มขึ้น ด้านบนของสแต็ค 1-2
เพื่อที่ว่าถ้าตอนนี้เราเพิ่ม องค์ประกอบอื่นมันจะ
ไปเป็นจำนวนที่ตั้งสองแถว
>> รายการที่เชื่อมโยงตอนนี้เป็นอีก วิธีการที่จะใช้กอง
และถ้าในความหมายนี้ หน้าจอที่นี่มีลักษณะที่คุ้นเคยกับคุณ
ก็เพราะมันมีลักษณะเกือบจะ เหมือนกันในความเป็นจริง
มันสวยมากตรง เช่นเดียวกับรายการที่เชื่อมโยงโดยลำพัง
ถ้าคุณจำได้จากการสนทนาของเรา รายการที่เชื่อมโยงโดยลำพังในวิดีโออื่น
ข้อ จำกัด เฉพาะที่นี่ สำหรับเราเป็นโปรแกรมเมอร์
เราไม่ได้รับอนุญาตให้ แทรกหรือลบแบบสุ่ม
จากรายการที่เชื่อมโยงโดยลำพัง ก่อนหน้านี้ที่เราจะทำ
เราได้ แต่ตอนนี้แทรกและลบออกจาก ด้านหน้าหรือด้านบนของที่เชื่อมโยง
รายการ
ที่จริงเท่านั้น แต่ความแตกต่าง
นี้เป็นอย่างอื่นรายการที่เชื่อมโยงโดยลำพัง
มันเป็นเพียงข้อ จำกัด แทนที่ในตัวเอง
เป็นโปรแกรมเมอร์ที่ การเปลี่ยนแปลงลงในกอง
>> กฎที่นี่คือการรักษาเสมอ ชี้ไปที่หัวของรายการที่เชื่อมโยง
นี้เป็นหลักสูตรทั่วไป กฎที่สำคัญเป็นครั้งแรก
สำหรับการเชื่อมโยงโดยลำพังรายการต่อไปที่คุณ จะต้องชี้ไปที่หัว
เพื่อให้มีที่ ห่วงโซ่จะสามารถที่จะดู
ทุกองค์ประกอบอื่น ๆ ในรายการที่เชื่อมโยง
แต่มันเป็นโดยเฉพาะอย่างยิ่ง ที่สำคัญกับกอง
และอื่น ๆ โดยทั่วไปคุณ จะต้องการจริง
ตัวชี้นี้จะเป็นตัวแปรทั่วโลก
มันอาจจะ จะง่ายยิ่งขึ้นด้วยวิธีการที่
ดังนั้นสิ่งที่ analogs ของการผลักดันและป๊อปหรือไม่
ขวา
ดังนั้นการผลักดันอีกครั้งคือการเพิ่ม องค์ประกอบใหม่ในกอง
ในรายการที่เชื่อมโยงว่า หมายความว่าเรากำลังจะมี
เพื่อสร้างโหนดใหม่ที่เรากำลัง จะเพิ่มลงในรายการที่เชื่อมโยง
และจากนั้นทำตามขั้นตอนอย่างระมัดระวัง ที่เราได้ระบุไว้ก่อนหน้านี้
ในรายการที่เชื่อมโยงโดยลำพังเพื่อเพิ่มไปยัง ห่วงโซ่โดยไม่ทำลายห่วงโซ่
และการสูญเสียหรือ orphaning ใด ๆ องค์ประกอบของรายการที่เชื่อมโยง
และนั่นก็เป็นสิ่งที่ว่า หยดเล็ก ๆ น้อย ๆ ของข้อความที่มีการสรุป
และให้มาดู ที่มันเป็นแผนภาพ
>> ดังนั้นนี่คือรายการที่เชื่อมโยงของเรา
มันพร้อมมีธาตุทั้งสี่
และอื่น ๆ ที่ดีที่สุดที่นี่เป็นของเรา สแต็คที่มีธาตุทั้งสี่
และขอบอกว่าตอนนี้เราต้องการที่จะ ผลักดันรายการใหม่บนสแต็คนี้
และเราต้องการที่จะผลักดันใหม่ รายการข้อมูลที่มีค่าคือ 12
ดีสิ่งที่เราจะทำอย่างไร
อย่างแรกที่เรากำลังจะ พื้นที่ malloc แบบไดนามิก
จัดสรรพื้นที่สำหรับโหนดใหม่
และแน่นอนในทันทีหลังจากที่ เราโทรไป malloc เราเสมอ
ให้แน่ใจว่าจะตรวจสอบโมฆะ เพราะถ้าเราได้ null กลับ
มีการเรียงลำดับของปัญหาบางอย่าง
เราไม่ต้องการที่จะ dereference null ว่า ตัวชี้หรือคุณจะประสบความผิด seg
ที่ไม่ดี
ดังนั้นเราจึงได้ malloced ของโหนด
เราจะถือว่าเราเคยประสบความสำเร็จที่นี่
เรากำลังจะไปใส่ลงใน 12 เขตข้อมูลของโหนดที่
ตอนนี้คุณจำที่ของตัวชี้ของเรา ย้ายต่อไปดังนั้นเราจึงไม่ทำลายห่วงโซ่?
เรามีสองตัวเลือกที่นี่ แต่ เพียงคนเดียวที่จะเป็นที่ปลอดภัย
คือการตั้งค่าต่อไปข่าวชี้ไปยัง ชี้ไปที่หัวเก่าของรายการ
หรือสิ่งที่เร็ว ๆ นี้จะ หัวหน้าเก่าของรายการ
และตอนนี้ที่ทุกคนของเรา องค์ประกอบที่จะถูกล่ามโซ่ไว้ด้วยกัน
เราก็สามารถย้ายรายการไปยังจุดที่ ไปยังสถานที่เดียวกับที่ไม่ใหม่
และตอนนี้เราได้ผลักดันให้มีประสิทธิภาพ ธาตุใหม่ลงบนด้านหน้าของสแต็ค
>> จะปรากฏเราก็ต้องการที่จะ ลบว่าองค์ประกอบแรก
และโดยทั่วไปดังนั้นสิ่งที่ เราจะต้องทำที่นี่
ดีที่เราต้องไปหาองค์ประกอบที่สอง
ในที่สุดที่จะกลายเป็นใหม่ หัวหลังจากที่เราลบครั้งแรกหนึ่ง
ดังนั้นเราก็ต้องเริ่มต้นจาก จุดเริ่มต้นที่จะย้ายไปข้างหน้าหนึ่ง
เมื่อเราได้มีไว้ในหนึ่ง ไปข้างหน้าของการที่เราอยู่ในปัจจุบัน
เราสามารถลบคนแรกได้อย่างปลอดภัย และจากนั้นเราก็สามารถย้ายหัว
ให้ชี้ไปที่สิ่งที่เป็น ระยะที่สองแล้วในขณะนี้
เป็นครั้งแรกหลังจากนั้น โหนดได้ถูกลบออก
>> ดังนั้นอีกครั้งการดู ที่มันเป็นแผนภาพเรา
ตอนนี้ต้องการที่จะป๊อป องค์ประกอบออกจากสแต็คนี้
ดังนั้นสิ่งที่เราจะทำ?
ดีที่เรากำลังแรกที่จะสร้าง ตัวชี้ใหม่ที่จะ
ให้ชี้ไปที่จุดเดียวกันในฐานะเป็นหัวหน้า
เรากำลังจะย้ายไปหนึ่งตำแหน่ง ไปข้างหน้าโดยกล่าวว่า Trav เท่ากับ
Trav ต่อไปเช่นที่ จะเลื่อนตัวชี้ Trav หนึ่ง
ตำแหน่งที่ไปข้างหน้า
ตอนนี้ที่เรามี ยึดมั่นในองค์ประกอบแรก
ผ่านตัวชี้ที่เรียกว่ารายการและ องค์ประกอบที่สองผ่านตัวชี้ที่เรียกว่า
Trav เราสามารถลบได้อย่างปลอดภัยว่า องค์ประกอบแรกจากกอง
โดยไม่สูญเสียส่วนที่เหลือ ของห่วงโซ่เพราะเรา
มีวิธีการดู กับองค์ประกอบที่สอง
ส่งต่อโดยวิธีการ ตัวชี้ที่เรียกว่า Trav
>> ดังนั้นตอนนี้เราสามารถฟรีโหนดที่
เราสามารถฟรีรายการ
และแล้วสิ่งที่เราต้องทำในขณะนี้คือ ย้ายรายการที่ต้องชี้ไปที่สถานที่เดียวกัน
Trav ที่ไม่และเราเรียงลำดับของการกลับมา ที่เราเริ่มต้นก่อนที่เราจะผลักดัน 12
ในสถานที่แรกขวา
ตรงนี้เป็นสิ่งที่เราเป็น
เรามีนี้สแต็คธาตุสี่
เราได้เพิ่มห้า
เราผลักห้า องค์ประกอบในและจากนั้นเรา
โผล่ว่าส่วนใหญ่เมื่อเร็ว ๆ นี้ เพิ่มองค์ประกอบกลับออก
>> ที่จริงสวยมาก ทั้งหมดที่มีให้กอง
คุณสามารถใช้พวกเขาเป็นอาร์เรย์
คุณสามารถใช้พวกเขาเป็นรายการที่เชื่อมโยง
มีของหลักสูตรอื่น ๆ วิธีการที่จะใช้พวกเขาเป็นอย่างดี
โดยทั่วไปเหตุผลที่เราจะใช้ กองคือการรักษาข้อมูลในลักษณะ
ที่เพิ่มเข้ามาเมื่อเร็ว ๆ นี้ องค์ประกอบที่เป็นสิ่งแรกที่เรา
จะต้องการที่จะได้รับกลับมา
ฉันลอยด์ดั๊กนี้เป็น CS50