[Powered by Google Translate] [რიგში]
[კრის გერბერი, ჰარვარდის უნივერსიტეტი]
ეს არის CS50, CS50.TV]
ერთი სასარგებლო მონაცემები სტრუქტურა მოგროვებისა უბრძანა კოლექცია ელემენტები არის რიგიდან.
იგი გამოიყენება, როდესაც ელემენტები უნდა წაიშალოს
იმავე მიზნით, როგორც ისინი დაემატა.
ეს კონცეფცია არის მოხსენიებული, როგორც FIFO, რომელიც აბრევიატურა ამისთვის პირველად, პირველი გარეთ.
რათა დაგეხმაროთ ვიზუალიზაციისთვის, ეს შეიძლება სასარგებლო იყოს სურათს
გადმოტანა ხაზის მაღაზიაში.
როგორც ადამიანი ჩამოვა, ისინი დაველოდოთ at უკან ხაზი.
მოლარე მაშინ იღებს უხვევს ემსახურება მომხმარებელს ფრონტის,
ვინც შემდეგ გასვლა ხაზის ერთ დროს.
კომპიუტერულ მეცნიერებაში, ჩვენ ეხება წინაშე მდგომ უფროსად
და კიდევ კუდი.
მაგალითი, როდესაც ჩვენ შეიძლება გამოვიყენოთ ეს განაცხადის
არის waitlist ამისთვის კლასის enrollments.
როგორც ადგილების გახდეს ხელმისაწვდომი კლასის,
პირს ხელმძღვანელი ელოდება უზრუნველყოფს შესაძლებლობა ჩაირიცხოთ კლასი.
>> რიგში შეიძლება აშენდა გამოყენებით ნებისმიერი კოლექცია
რომ ინახავს მონაცემები იმისათვის, როგორიცაა მასივი ან დაკავშირებული სიაში.
ერთად კოლექცია შესანახად ელემენტი მდგომ,
ჩვენ ასევე გვჭირდება მეთოდი დაამატოთ ელემენტი დასასრულს მდგომ,
რომელსაც enqueuing,
და კიდევ ერთი ამოიღონ პუნქტის საწყისი ხელმძღვანელი მდგომ,
რომელსაც dequeuing.
ეს ხშირად სასარგებლო უნდა შეიცავდეს სხვა მეთოდი დაბრუნებას მიმდინარე სიგრძეზე მდგომ
ისევე როგორც მეთოდი, რათა შეამოწმოთ, თუ მდგომ არის ცარიელი.
მოდით შევხედოთ, თუ როგორ შეიძლება განახორციელოს რიგი რიცხვებით დო,
გამოყენებით array ამისთვის კოლექცია ელემენტები.
პირველი, ჩვენ შევქმნათ სტრუქტურა მოუწოდა მდგომ გავმართოთ ცვლადები.
ჩვენ გამოვიყენებთ ფიქსირებული ზომის 0 ინდექსი მასივი რიცხვებით
შესანახად ელემენტები.
ჩვენ ასევე მოიცავს ცვლადში ხელმძღვანელი
რომ ინახავს მაჩვენებელი ელემენტს, რომელიც ამჟამად ხელმძღვანელი რიგიდან.
მესამე ცვლადი, მოუწოდა სიგრძე, გამოყენებული იქნება
შენარჩუნება ტრეკზე რაოდენობის ელემენტების მასივი.
როგორც ალტერნატიული, თქვენ შეიძლება განიხილონ გამოყენებით ცვლადში კუდი
უნდა აღვნიშნო, რომ ბოლო სფეროში ელემენტია მასივი.
სანამ ჩვენ წერენ აღარ კოდი,
მოდით ვცდილობთ ჩვენი დიზაინით.
დავიწყოთ ცარიელი მასივი სიგრძე 0,
უფროსთან მითითებული 0.
ახლა მოდით enqueue 4 ღირებულებებს - 6, 2, 3, და 1.
სიგრძე იქნება 4,
და უფროსი დარჩება 0.
>> რა მოხდება, თუ ჩვენ dequeue მნიშვნელობა?
ჩვენ შეამცირებს სიგრძე დან 3,
მითითებული ხელმძღვანელს 1,
და დაბრუნების ღირებულება 6.
რომ კოდი შეიძლება მოსწონს ეს.
აქ dequeue ფუნქცია,
რომელიც იღებს მომცეთ მდგომ - Q - და მომცეთ ელემენტს,
რაც ტიპის int.
პირველი ჩვენ შეამოწმოს სიგრძეზე მდგომ რომ დავრწმუნდეთ, რომ ეს უფრო მეტია, ვიდრე 0,
უზრუნველყოს, რომ არსებობს ელემენტს უნდა dequeued.
მაშინ ჩვენ წელს ელემენტების მასივი, თანამდებობაზე ხელმძღვანელი,
და მითითებული ღირებულება ელემენტს უნდა იყოს ღირებულება რომ პოზიცია.
მაშინ შევცვლით ხელმძღვანელი უნდა იყოს შემდეგი ინდექსი
% მოცულობა.
ჩვენ მაშინ შეამციროს სიგრძეზე მდგომ მიერ 1.
საბოლოოდ, ჩვენ დაუბრუნოს ჭეშმარიტი მიუთითებს, რომ dequeue წარმატებული იყო.
თუ ჩვენ dequeue ერთხელ, სიგრძე გახდება 2,
ხელმძღვანელი გახდება 2,
და დაბრუნებული მნიშვნელობა იქნება 2.
>> რა მოხდება, თუ ჩვენ enqueue სხვა ღირებულება, როგორიცაა 7?
როგორც ვიყავით დასასრულს მდგომ,
ჩვენ უნდა გადაიტანოთ გარშემო და შესანახად ღირებულების ელემენტს 0 of მასივი.
მათემატიკურად, ეს შეიძლება იყოს წარმოდგენილია დასძინა სიგრძე
to მაჩვენებელი ხელმძღვანელი
და საშემსრულებლო modulus გამოყენებით მდგომ მოცულობა.
აქ არის 2 +2, რომელიც 4% 4,
რომელიც 0.
თარგმნა ამ იდეა კოდი გვაქვს ამ ფუნქციის.
აქ ჩვენ ვხედავთ enqueue ფუნქცია,
რომელიც იღებს მომცეთ მდგომ - Q -
და იღებს ელემენტს უნდა enqueued, რაც მთელი რიცხვი.
ჩვენ შემდეგი შეამოწმოთ დავრწმუნდეთ, რომ ტევადობა მდგომ
ჯერ კიდევ აღემატება მიმდინარე სიგრძეზე რიგიდან.
შემდეგი, ჩვენ ვინახავთ ელემენტია ელემენტების მასივი
ზე ინდექსი, რომელიც განისაზღვრება უფროსი + სიგრძე% სიმძლავრით რიგიდან.
ჩვენ მაშინ გაიზრდება მდგომ სიგრძის 1,
და მაშინ იქნება TRUE მიუთითოს, რომ enqueue ფუნქცია წარმატებული იყო.
>> გარდა ამისა ორი ფუნქცია ჩვენ აღვნიშნეთ,
არსებობს ორი დამატებითი ფუნქციები.
პირველი არის isempty ფუნქცია,
რომელიც იღებს მომცეთ მდგომ
და ადასტურებს, რომ სიგრძე არის 0.
მეორე სიგრძე ფუნქცია,
რომელიც ასევე იღებს მომცეთ მდგომ
და ბრუნდება მიმდინარე სიგრძე საწყისი struct.
ეს მოკლე მიმოხილვა აჩვენა ერთი შესაძლო განხორციელების რიგიდან.
ერთი შეზღუდვები ამ განხორციელება
ის არის, რომ რიგი აქვს ფიქსირებული მაქსიმალური ზომა.
თუ ჩვენ ვცდილობთ დაამატოთ მეტი ელემენტები, ვიდრე მდგომ იტევს,
ჩვენ შეიძლება დაგჭირდეთ იგნორირება მოთხოვნით და ვარდნა ელემენტი,
ან შეიძლება ურჩევნია დააბრუნებს ტიპის შეცდომა.
გამოყენება დაკავშირებულია სია ვიდრე მასივი
გაუადვილებდა რომ დინამიურად ზომა რიგიდან.
თუმცა, მას შემდეგ, რაც ჩვენ არ გვაქვს პირდაპირი შეხება ელემენტები დაკავშირებულია სია,
თუ ჩვენ არ ტრეკზე კუდი,
გვექნებოდა სკანირებას მთელი უკავშირდება სია მისაღებად ბოლომდე ყოველ ჯერზე.
ჩვენ შეგვიძლია აგრეთვე განიხილოს გამოყენებით მასივი სხვა მონაცემები ტიპის,
როგორიცაა structs, რომ შევქმნათ რიგები უფრო კომპლექსური ელემენტებს.
ფიქრი თავში ჩვენი მაგალითი კლასის waitlist,
ამ სტრუქტურებში შეიძლება წარმოადგენენ ინდივიდუალური სტუდენტებს.
>> ჩემი სახელი არის კრის გერბერი, და ეს არის CS50.
[CS50.TV]
და დააბრუნებს - >> კიდევ ერთხელ.
და დაბრუნების ჭეშმარიტი მიუთითებს, რომ - მდგომ წარმატებული იყო.
-% სიმძლავრით მდგომ -
ეს იქნება გართობა რედაქტირების. [სიცილის]