1 00:00:00,000 --> 00:00:02,000 [Powered by Google Translate] [რიგში] 2 00:00:02,000 --> 00:00:05,000 [კრის გერბერი, ჰარვარდის უნივერსიტეტი] 3 00:00:05,000 --> 00:00:07,000 ეს არის CS50, CS50.TV] 4 00:00:07,000 --> 00:00:11,000 ერთი სასარგებლო მონაცემები სტრუქტურა მოგროვებისა უბრძანა კოლექცია ელემენტები არის რიგიდან. 5 00:00:11,000 --> 00:00:14,000 იგი გამოიყენება, როდესაც ელემენტები უნდა წაიშალოს 6 00:00:14,000 --> 00:00:16,000 იმავე მიზნით, როგორც ისინი დაემატა. 7 00:00:16,000 --> 00:00:20,000 ეს კონცეფცია არის მოხსენიებული, როგორც FIFO, რომელიც აბრევიატურა ამისთვის პირველად, პირველი გარეთ. 8 00:00:20,000 --> 00:00:23,000 რათა დაგეხმაროთ ვიზუალიზაციისთვის, ეს შეიძლება სასარგებლო იყოს სურათს 9 00:00:23,000 --> 00:00:25,000 გადმოტანა ხაზის მაღაზიაში. 10 00:00:25,000 --> 00:00:28,000 როგორც ადამიანი ჩამოვა, ისინი დაველოდოთ at უკან ხაზი. 11 00:00:28,000 --> 00:00:31,000 მოლარე მაშინ იღებს უხვევს ემსახურება მომხმარებელს ფრონტის, 12 00:00:31,000 --> 00:00:34,000 ვინც შემდეგ გასვლა ხაზის ერთ დროს. 13 00:00:34,000 --> 00:00:37,000 კომპიუტერულ მეცნიერებაში, ჩვენ ეხება წინაშე მდგომ უფროსად 14 00:00:37,000 --> 00:00:39,000 და კიდევ კუდი. 15 00:00:39,000 --> 00:00:41,000 მაგალითი, როდესაც ჩვენ შეიძლება გამოვიყენოთ ეს განაცხადის 16 00:00:41,000 --> 00:00:44,000 არის waitlist ამისთვის კლასის enrollments. 17 00:00:44,000 --> 00:00:46,000 როგორც ადგილების გახდეს ხელმისაწვდომი კლასის, 18 00:00:46,000 --> 00:00:50,000 პირს ხელმძღვანელი ელოდება უზრუნველყოფს შესაძლებლობა ჩაირიცხოთ კლასი. 19 00:00:50,000 --> 00:00:53,000 >> რიგში შეიძლება აშენდა გამოყენებით ნებისმიერი კოლექცია 20 00:00:53,000 --> 00:00:57,000 რომ ინახავს მონაცემები იმისათვის, როგორიცაა მასივი ან დაკავშირებული სიაში. 21 00:00:57,000 --> 00:01:00,000 ერთად კოლექცია შესანახად ელემენტი მდგომ, 22 00:01:00,000 --> 00:01:02,000 ჩვენ ასევე გვჭირდება მეთოდი დაამატოთ ელემენტი დასასრულს მდგომ, 23 00:01:02,000 --> 00:01:04,000 რომელსაც enqueuing, 24 00:01:04,000 --> 00:01:07,000 და კიდევ ერთი ამოიღონ პუნქტის საწყისი ხელმძღვანელი მდგომ, 25 00:01:07,000 --> 00:01:09,000 რომელსაც dequeuing. 26 00:01:09,000 --> 00:01:14,000 ეს ხშირად სასარგებლო უნდა შეიცავდეს სხვა მეთოდი დაბრუნებას მიმდინარე სიგრძეზე მდგომ 27 00:01:14,000 --> 00:01:17,000 ისევე როგორც მეთოდი, რათა შეამოწმოთ, თუ მდგომ არის ცარიელი. 28 00:01:17,000 --> 00:01:20,000 მოდით შევხედოთ, თუ როგორ შეიძლება განახორციელოს რიგი რიცხვებით დო, 29 00:01:20,000 --> 00:01:23,000 გამოყენებით array ამისთვის კოლექცია ელემენტები. 30 00:01:23,000 --> 00:01:27,000 პირველი, ჩვენ შევქმნათ სტრუქტურა მოუწოდა მდგომ გავმართოთ ცვლადები. 31 00:01:27,000 --> 00:01:30,000 ჩვენ გამოვიყენებთ ფიქსირებული ზომის 0 ინდექსი მასივი რიცხვებით 32 00:01:30,000 --> 00:01:33,000 შესანახად ელემენტები. 33 00:01:33,000 --> 00:01:35,000 ჩვენ ასევე მოიცავს ცვლადში ხელმძღვანელი 34 00:01:35,000 --> 00:01:39,000 რომ ინახავს მაჩვენებელი ელემენტს, რომელიც ამჟამად ხელმძღვანელი რიგიდან. 35 00:01:39,000 --> 00:01:42,000 მესამე ცვლადი, მოუწოდა სიგრძე, გამოყენებული იქნება 36 00:01:42,000 --> 00:01:45,000 შენარჩუნება ტრეკზე რაოდენობის ელემენტების მასივი. 37 00:01:45,000 --> 00:01:48,000 როგორც ალტერნატიული, თქვენ შეიძლება განიხილონ გამოყენებით ცვლადში კუდი 38 00:01:48,000 --> 00:01:51,000 უნდა აღვნიშნო, რომ ბოლო სფეროში ელემენტია მასივი. 39 00:01:51,000 --> 00:01:53,000 სანამ ჩვენ წერენ აღარ კოდი, 40 00:01:53,000 --> 00:01:55,000 მოდით ვცდილობთ ჩვენი დიზაინით. 41 00:01:55,000 --> 00:01:58,000 დავიწყოთ ცარიელი მასივი სიგრძე 0, 42 00:01:58,000 --> 00:02:02,000 უფროსთან მითითებული 0. 43 00:02:02,000 --> 00:02:11,000 ახლა მოდით enqueue 4 ღირებულებებს - 6, 2, 3, და 1. 44 00:02:11,000 --> 00:02:14,000 სიგრძე იქნება 4, 45 00:02:14,000 --> 00:02:17,000 და უფროსი დარჩება 0. 46 00:02:17,000 --> 00:02:20,000 >> რა მოხდება, თუ ჩვენ dequeue მნიშვნელობა? 47 00:02:20,000 --> 00:02:24,000 ჩვენ შეამცირებს სიგრძე დან 3, 48 00:02:24,000 --> 00:02:28,000 მითითებული ხელმძღვანელს 1, 49 00:02:28,000 --> 00:02:33,000 და დაბრუნების ღირებულება 6. 50 00:02:33,000 --> 00:02:36,000 რომ კოდი შეიძლება მოსწონს ეს. 51 00:02:36,000 --> 00:02:38,000 აქ dequeue ფუნქცია, 52 00:02:38,000 --> 00:02:41,000 რომელიც იღებს მომცეთ მდგომ - Q - და მომცეთ ელემენტს, 53 00:02:41,000 --> 00:02:44,000 რაც ტიპის int. 54 00:02:44,000 --> 00:02:47,000 პირველი ჩვენ შეამოწმოს სიგრძეზე მდგომ რომ დავრწმუნდეთ, რომ ეს უფრო მეტია, ვიდრე 0, 55 00:02:47,000 --> 00:02:50,000 უზრუნველყოს, რომ არსებობს ელემენტს უნდა dequeued. 56 00:02:50,000 --> 00:02:54,000 მაშინ ჩვენ წელს ელემენტების მასივი, თანამდებობაზე ხელმძღვანელი, 57 00:02:54,000 --> 00:02:58,000 და მითითებული ღირებულება ელემენტს უნდა იყოს ღირებულება რომ პოზიცია. 58 00:02:58,000 --> 00:03:01,000 მაშინ შევცვლით ხელმძღვანელი უნდა იყოს შემდეგი ინდექსი 59 00:03:01,000 --> 00:03:04,000 % მოცულობა. 60 00:03:04,000 --> 00:03:07,000 ჩვენ მაშინ შეამციროს სიგრძეზე მდგომ მიერ 1. 61 00:03:07,000 --> 00:03:12,000 საბოლოოდ, ჩვენ დაუბრუნოს ჭეშმარიტი მიუთითებს, რომ dequeue წარმატებული იყო. 62 00:03:12,000 --> 00:03:19,000 თუ ჩვენ dequeue ერთხელ, სიგრძე გახდება 2, 63 00:03:19,000 --> 00:03:24,000 ხელმძღვანელი გახდება 2, 64 00:03:24,000 --> 00:03:32,000 და დაბრუნებული მნიშვნელობა იქნება 2. 65 00:03:32,000 --> 00:03:35,000 >> რა მოხდება, თუ ჩვენ enqueue სხვა ღირებულება, როგორიცაა 7? 66 00:03:35,000 --> 00:03:37,000 როგორც ვიყავით დასასრულს მდგომ, 67 00:03:37,000 --> 00:03:47,000 ჩვენ უნდა გადაიტანოთ გარშემო და შესანახად ღირებულების ელემენტს 0 of მასივი. 68 00:03:47,000 --> 00:03:50,000 მათემატიკურად, ეს შეიძლება იყოს წარმოდგენილია დასძინა სიგრძე 69 00:03:50,000 --> 00:03:52,000 to მაჩვენებელი ხელმძღვანელი 70 00:03:52,000 --> 00:03:55,000 და საშემსრულებლო modulus გამოყენებით მდგომ მოცულობა. 71 00:03:55,000 --> 00:04:00,000 აქ არის 2 +2, რომელიც 4% 4, 72 00:04:00,000 --> 00:04:02,000 რომელიც 0. 73 00:04:02,000 --> 00:04:05,000 თარგმნა ამ იდეა კოდი გვაქვს ამ ფუნქციის. 74 00:04:05,000 --> 00:04:08,000 აქ ჩვენ ვხედავთ enqueue ფუნქცია, 75 00:04:08,000 --> 00:04:10,000 რომელიც იღებს მომცეთ მდგომ - Q - 76 00:04:10,000 --> 00:04:14,000 და იღებს ელემენტს უნდა enqueued, რაც მთელი რიცხვი. 77 00:04:14,000 --> 00:04:18,000 ჩვენ შემდეგი შეამოწმოთ დავრწმუნდეთ, რომ ტევადობა მდგომ 78 00:04:18,000 --> 00:04:21,000 ჯერ კიდევ აღემატება მიმდინარე სიგრძეზე რიგიდან. 79 00:04:21,000 --> 00:04:24,000 შემდეგი, ჩვენ ვინახავთ ელემენტია ელემენტების მასივი 80 00:04:24,000 --> 00:04:30,000 ზე ინდექსი, რომელიც განისაზღვრება უფროსი + სიგრძე% სიმძლავრით რიგიდან. 81 00:04:30,000 --> 00:04:33,000 ჩვენ მაშინ გაიზრდება მდგომ სიგრძის 1, 82 00:04:33,000 --> 00:04:39,000 და მაშინ იქნება TRUE მიუთითოს, რომ enqueue ფუნქცია წარმატებული იყო. 83 00:04:39,000 --> 00:04:42,000 >> გარდა ამისა ორი ფუნქცია ჩვენ აღვნიშნეთ, 84 00:04:42,000 --> 00:04:44,000 არსებობს ორი დამატებითი ფუნქციები. 85 00:04:44,000 --> 00:04:46,000 პირველი არის isempty ფუნქცია, 86 00:04:46,000 --> 00:04:48,000 რომელიც იღებს მომცეთ მდგომ 87 00:04:48,000 --> 00:04:51,000 და ადასტურებს, რომ სიგრძე არის 0. 88 00:04:51,000 --> 00:04:53,000 მეორე სიგრძე ფუნქცია, 89 00:04:53,000 --> 00:04:55,000 რომელიც ასევე იღებს მომცეთ მდგომ 90 00:04:55,000 --> 00:04:58,000 და ბრუნდება მიმდინარე სიგრძე საწყისი struct. 91 00:04:58,000 --> 00:05:03,000 ეს მოკლე მიმოხილვა აჩვენა ერთი შესაძლო განხორციელების რიგიდან. 92 00:05:03,000 --> 00:05:06,000 ერთი შეზღუდვები ამ განხორციელება 93 00:05:06,000 --> 00:05:08,000 ის არის, რომ რიგი აქვს ფიქსირებული მაქსიმალური ზომა. 94 00:05:08,000 --> 00:05:11,000 თუ ჩვენ ვცდილობთ დაამატოთ მეტი ელემენტები, ვიდრე მდგომ იტევს, 95 00:05:11,000 --> 00:05:14,000 ჩვენ შეიძლება დაგჭირდეთ იგნორირება მოთხოვნით და ვარდნა ელემენტი, 96 00:05:14,000 --> 00:05:17,000 ან შეიძლება ურჩევნია დააბრუნებს ტიპის შეცდომა. 97 00:05:17,000 --> 00:05:20,000 გამოყენება დაკავშირებულია სია ვიდრე მასივი 98 00:05:20,000 --> 00:05:22,000 გაუადვილებდა რომ დინამიურად ზომა რიგიდან. 99 00:05:22,000 --> 00:05:26,000 თუმცა, მას შემდეგ, რაც ჩვენ არ გვაქვს პირდაპირი შეხება ელემენტები დაკავშირებულია სია, 100 00:05:26,000 --> 00:05:28,000 თუ ჩვენ არ ტრეკზე კუდი, 101 00:05:28,000 --> 00:05:32,000 გვექნებოდა სკანირებას მთელი უკავშირდება სია მისაღებად ბოლომდე ყოველ ჯერზე. 102 00:05:32,000 --> 00:05:35,000 ჩვენ შეგვიძლია აგრეთვე განიხილოს გამოყენებით მასივი სხვა მონაცემები ტიპის, 103 00:05:35,000 --> 00:05:39,000 როგორიცაა structs, რომ შევქმნათ რიგები უფრო კომპლექსური ელემენტებს. 104 00:05:39,000 --> 00:05:42,000 ფიქრი თავში ჩვენი მაგალითი კლასის waitlist, 105 00:05:42,000 --> 00:05:45,000 ამ სტრუქტურებში შეიძლება წარმოადგენენ ინდივიდუალური სტუდენტებს. 106 00:05:45,000 --> 00:05:48,000 >> ჩემი სახელი არის კრის გერბერი, და ეს არის CS50. 107 00:05:48,000 --> 00:05:51,000 [CS50.TV] 108 00:05:51,000 --> 00:05:55,000 და დააბრუნებს - >> კიდევ ერთხელ. 109 00:05:55,000 --> 00:06:00,000 და დაბრუნების ჭეშმარიტი მიუთითებს, რომ - მდგომ წარმატებული იყო. 110 00:06:00,000 --> 00:06:03,000 -% სიმძლავრით მდგომ - 111 00:06:03,000 --> 00:06:06,000 ეს იქნება გართობა რედაქტირების. [სიცილის]