مجموعه ها collections
ساختمانهای داده: وکتور و نگاشت، پشته، صف، صف دوسر، مجموعه، لیست پیوندی، صف اولویتدار و شمارنده.
واردسازی مجموعه ها
وکتور و نگاشت که در هر برنامهای به کار میروند، در همین بسته تعریف شدهاند، اما برای استفاده از آنها لازم نیست بسته را وارد کنید. بقیهی ساختمانها، مثل پشته و صف، با واردسازی مجموعه ها در دسترساند.
همهی این ساختمانها عام هستند: گونهی عضوها را با <...> تعیین میکنید، مثل مجموعه ها.پشته<رشته>. همه حافظه میگیرند؛ درست پس از ساختن، دیرکن ... .آزادسازی() بنویسید.
روشهای وکتور و نگاشت دو نام فارسی دارند: نام کوتاهی که در درسها میبینید (بیفزا، بگیر، آزادکن) و نامی که این بسته تعریف کرده (افزودن، دریافت، آزادسازی). هر دو کار میکنند؛ هر کدام را که خواناتر میدانید به کار ببرید، فقط در یک برنامه یکدست بنویسید.
کدام را انتخاب کنم؟ برای فهرست معمولی وکتور؛ برای «آخرین آمده، اولین رفته» پشته؛ برای «اولین آمده، اولین رفته» صف؛ برای افزودن و برداشتن از هر دو سر صف دوسر؛ برای جستجوی سریع با کلید نگاشت؛ برای حذف تکراریها مجموعه؛ و برای «همیشه کوچکترین را بده» صف اولویت دار.
گونهها
لیست پیوندی LinkedList
ساختار لیست پیوندی<T>| نام | انگلیسی | گونه | توضیح |
|---|---|---|---|
| vals | vals | بردار | مقدار گرهها. |
| nxt | nxt | بردار<صحیح> | شمارهی گره بعدی هر گره. |
| prv | prv | بردار<صحیح> | شمارهی گره قبلی هر گره. |
| head | head | صحیح | شمارهی نخستین گره. |
| tail | tail | صحیح | شمارهی آخرین گره. |
| freed | freed | صحیح | شمارهی نخستین گره آزادشده که برای استفادهی دوباره نگه داشته شده. |
| count | count | صحیح = 0 | تعداد عضوها. |
واردسازی مجموعه ها
روال ریشه:
ناپایا ل := مجموعه ها.لیست پیوندی {} برگردان مجموعه ها.لیست پیوندی<رشته>
دیرکن ل.آزادسازی()
ل.افزودن به انتها("ب")
ل.افزودن به انتها("پ")
ل.افزودن به ابتدا("الف")
سرچاپ ل.تبدیل به بردار()، ل.اندازه()
سرچاپ ل.مقدار ابتدا()، ل.مقدار انتها()، ل.دریافت(۱)
سرچاپ ل.برداشتن از ابتدا()، ل.برداشتن از انتها()، ل.اندازه()، ل.خالی است()
پایانافزودن به انتها push_back
روال افزودن به انتها(v: T)نمونهی این مورد همراه با موارد بالاتر آمده است: collections-LinkedList.salam
افزودن به ابتدا push_front
روال افزودن به ابتدا(v: T)نمونهی این مورد همراه با موارد بالاتر آمده است: collections-LinkedList.salam
برداشتن از ابتدا pop_front
روال برداشتن از ابتدا(): Tنمونهی این مورد همراه با موارد بالاتر آمده است: collections-LinkedList.salam
برداشتن از انتها pop_back
روال برداشتن از انتها(): Tنمونهی این مورد همراه با موارد بالاتر آمده است: collections-LinkedList.salam
مقدار ابتدا front_val
روال مقدار ابتدا(): Tنمونهی این مورد همراه با موارد بالاتر آمده است: collections-LinkedList.salam
مقدار انتها back_val
روال مقدار انتها(): Tنمونهی این مورد همراه با موارد بالاتر آمده است: collections-LinkedList.salam
اندازه size
روال اندازه(): صحیحنمونهی این مورد همراه با موارد بالاتر آمده است: collections-LinkedList.salam
خالی است is_empty
روال خالی است(): منطقینمونهی این مورد همراه با موارد بالاتر آمده است: collections-LinkedList.salam
دریافت get
روال دریافت(i: صحیح): Ti از ابتدا؛ برای رسیدن به آن باید از ابتدا جلو رفت، پس برای دسترسی مکرر با شماره، وکتور بهتر است.نمونهی این مورد همراه با موارد بالاتر آمده است: collections-LinkedList.salam
تبدیل به بردار to_vector
روال تبدیل به بردار(): بردار<T>نمونهی این مورد همراه با موارد بالاتر آمده است: collections-LinkedList.salam
آزادسازی free
روال آزادسازی()نمونهی این مورد همراه با موارد بالاتر آمده است: collections-LinkedList.salam
شمارنده Counter
ساختار شمارنده<K>| نام | انگلیسی | گونه | توضیح |
|---|---|---|---|
| m | m | نگاشت درهم | نگاشت از هر چیز به تعدادش. |
واردسازی مجموعه ها
واردسازی رشته
روال ریشه:
ناپایا ش := مجموعه ها.شمارنده {} برگردان مجموعه ها.شمارنده<رشته>
دیرکن ش.آزادسازی()
هر و۱ در رشته.واژه ها("به نام خدا به نام دوست"):
ش.افزودن(و۱)
پایان
ش.افزودن چندتایی("دوست"، ۲)
سرچاپ ش.شمارش("نام")، ش.شمارش("دوست")، ش.شمارش("نیست")، ش.متمایز()
پایانافزودن add
روال افزودن(k: K)k اضافه میکند.نمونهی این مورد همراه با موارد بالاتر آمده است: collections-Counter.salam
افزودن چندتایی add_n
روال افزودن چندتایی(k: K، n: صحیح)n بار به شمار k اضافه میکند.نمونهی این مورد همراه با موارد بالاتر آمده است: collections-Counter.salam
شمارش count
روال شمارش(k: K): صحیحk دیده شده؛ اگر هیچوقت، صفر.نمونهی این مورد همراه با موارد بالاتر آمده است: collections-Counter.salam
متمایز distinct
روال متمایز(): صحیحنمونهی این مورد همراه با موارد بالاتر آمده است: collections-Counter.salam
آزادسازی free
روال آزادسازی()نمونهی این مورد همراه با موارد بالاتر آمده است: collections-Counter.salam
صف اولویت دار PriorityQueue
ساختار صف اولویت دار<T>| نام | انگلیسی | گونه | توضیح |
|---|---|---|---|
| h | h | بردار | عضوها به شکل هرم دودویی. |
واردسازی مجموعه ها
روال ریشه:
ناپایا ص := مجموعه ها.صف اولویت دار {} برگردان مجموعه ها.صف اولویت دار<صحیح>
دیرکن ص.آزادسازی()
هر ع در [۵، ۱، ۴، ۲، ۳]:
ص.افزودن(ع)
پایان
سرچاپ ص.مشاهده()، ص.اندازه()
تا وارونه ص.خالی است():
چاپ ص.برداشتن()، ""
پایان
سرچاپ ""
پایانافزودن push
روال افزودن(x: T)نمونهی این مورد همراه با موارد بالاتر آمده است: collections-PriorityQueue.salam
مشاهده peek
روال مشاهده(): Tنمونهی این مورد همراه با موارد بالاتر آمده است: collections-PriorityQueue.salam
اندازه size
روال اندازه(): صحیحنمونهی این مورد همراه با موارد بالاتر آمده است: collections-PriorityQueue.salam
خالی است is_empty
روال خالی است(): منطقینمونهی این مورد همراه با موارد بالاتر آمده است: collections-PriorityQueue.salam
برداشتن pop
روال برداشتن(): Tنمونهی این مورد همراه با موارد بالاتر آمده است: collections-PriorityQueue.salam
آزادسازی free
روال آزادسازی()نمونهی این مورد همراه با موارد بالاتر آمده است: collections-PriorityQueue.salam
مجموعه Set
ساختار مجموعه<T>| نام | انگلیسی | گونه | توضیح |
|---|---|---|---|
| m | m | نگاشت درهم | نگاشتی که عضوها را بهعنوان کلید نگه میدارد. |
واردسازی مجموعه ها
روال ریشه:
ناپایا م := مجموعه ها.مجموعه {} برگردان مجموعه ها.مجموعه<رشته>
دیرکن م.آزادسازی()
هر ب در ["سلام"، "دنیا"، "سلام"]:
م.افزودن(ب)
پایان
سرچاپ م.اندازه()، م.دارد("سلام")، م.دارد("خداحافظ")
سرچاپ م.حذف("دنیا")، م.اندازه()، م.خالی است()
پایانافزودن add
روال افزودن(x: T)نمونهی این مورد همراه با موارد بالاتر آمده است: collections-Set.salam
دارد has
روال دارد(x: T): منطقینمونهی این مورد همراه با موارد بالاتر آمده است: collections-Set.salam
حذف remove
روال حذف(x: T): منطقینمونهی این مورد همراه با موارد بالاتر آمده است: collections-Set.salam
اندازه size
روال اندازه(): صحیحنمونهی این مورد همراه با موارد بالاتر آمده است: collections-Set.salam
خالی است is_empty
روال خالی است(): منطقینمونهی این مورد همراه با موارد بالاتر آمده است: collections-Set.salam
آزادسازی free
روال آزادسازی()نمونهی این مورد همراه با موارد بالاتر آمده است: collections-Set.salam
نگاشت مرتب OrderedMap
ساختار نگاشت مرتب| نام | انگلیسی | گونه | توضیح |
|---|---|---|---|
| keys | keys | بردار<رشته> | کلیدها به ترتیب درج. |
| vals | vals | بردار<رشته> | مقدارها به همان ترتیب. |
| idx | idx | نگاشت درهم<رشته، صحیح> | نگاشت از کلید به شمارهاش، برای جستجوی سریع. |
واردسازی مجموعه ها
روال ریشه:
ناپایا ن := مجموعه ها.نگاشت مرتب {}
دیرکن ن.آزادسازی()
ن.تنظیم("نام"، "سلام")
ن.تنظیم("نسخه"، "۰.۴.۸")
ن.تنظیم("زبان"، "فارسی")
سرچاپ ن.طول()، ن.دارد("نسخه")، ن.دریافت("نام")، ن.دریافت با پیش فرض("مجوز"، "-")
سرچاپ ن.نمایه کلید("زبان")، ن.کلید در(۰)، ن.مقدار در(۰)
ن.تنظیم در(۰، "Salam")
سرچاپ ن.حذف("نسخه")، ن.طول()
کلیدها := ن.رونوشت کلیدها()
سرچاپ کلیدها
پایاننمایه کلید index_of
روال نمایه کلید(k: رشته): صحیحنمونهی این مورد همراه با موارد بالاتر آمده است: collections-OrderedMap.salam
طول len
روال طول(): صحیحنمونهی این مورد همراه با موارد بالاتر آمده است: collections-OrderedMap.salam
دارد has
روال دارد(k: رشته): منطقینمونهی این مورد همراه با موارد بالاتر آمده است: collections-OrderedMap.salam
دریافت get
روال دریافت(k: رشته): رشتهنمونهی این مورد همراه با موارد بالاتر آمده است: collections-OrderedMap.salam
دریافت با پیش فرض get_or
روال دریافت با پیش فرض(k: رشته، def: رشته): رشتهنمونهی این مورد همراه با موارد بالاتر آمده است: collections-OrderedMap.salam
تنظیم set
روال تنظیم(k: رشته، v: رشته): صحیحنمونهی این مورد همراه با موارد بالاتر آمده است: collections-OrderedMap.salam
کلید در key_at
روال کلید در(i: صحیح): رشتهi.نمونهی این مورد همراه با موارد بالاتر آمده است: collections-OrderedMap.salam
مقدار در val_at
روال مقدار در(i: صحیح): رشتهi.نمونهی این مورد همراه با موارد بالاتر آمده است: collections-OrderedMap.salam
تنظیم در set_at
روال تنظیم در(i: صحیح، v: رشته)i را جایگزین میکند.نمونهی این مورد همراه با موارد بالاتر آمده است: collections-OrderedMap.salam
حذف remove
روال حذف(k: رشته): صحیحنمونهی این مورد همراه با موارد بالاتر آمده است: collections-OrderedMap.salam
رونوشت کلیدها clone_keys
روال رونوشت کلیدها(): بردار<رشته>نمونهی این مورد همراه با موارد بالاتر آمده است: collections-OrderedMap.salam
آزادسازی free
روال آزادسازی()نمونهی این مورد همراه با موارد بالاتر آمده است: collections-OrderedMap.salam
صف دوسر Deque
ساختار صف دوسر<T>| نام | انگلیسی | گونه | توضیح |
|---|---|---|---|
| front | front | بردار | عضوهای سمت ابتدا. |
| back | back | بردار | عضوهای سمت انتها. |
واردسازی مجموعه ها
روال ریشه:
ناپایا د := مجموعه ها.صف دوسر {} برگردان مجموعه ها.صف دوسر<صحیح>
دیرکن د.آزادسازی()
د.افزودن به انتها(۲)
د.افزودن به انتها(۳)
د.افزودن به ابتدا(۱)
سرچاپ د.مقدار ابتدا()، د.مقدار انتها()، د.دریافت(۱)، د.اندازه()
سرچاپ د.برداشتن از ابتدا()، د.برداشتن از انتها()، د.اندازه()، د.خالی است()
پایانافزودن به ابتدا push_front
روال افزودن به ابتدا(x: T)نمونهی این مورد همراه با موارد بالاتر آمده است: collections-Deque.salam
افزودن به انتها push_back
روال افزودن به انتها(x: T)نمونهی این مورد همراه با موارد بالاتر آمده است: collections-Deque.salam
برداشتن از ابتدا pop_front
روال برداشتن از ابتدا(): Tنمونهی این مورد همراه با موارد بالاتر آمده است: collections-Deque.salam
برداشتن از انتها pop_back
روال برداشتن از انتها(): Tنمونهی این مورد همراه با موارد بالاتر آمده است: collections-Deque.salam
مقدار ابتدا front_val
روال مقدار ابتدا(): Tنمونهی این مورد همراه با موارد بالاتر آمده است: collections-Deque.salam
مقدار انتها back_val
روال مقدار انتها(): Tنمونهی این مورد همراه با موارد بالاتر آمده است: collections-Deque.salam
اندازه size
روال اندازه(): صحیحنمونهی این مورد همراه با موارد بالاتر آمده است: collections-Deque.salam
خالی است is_empty
روال خالی است(): منطقینمونهی این مورد همراه با موارد بالاتر آمده است: collections-Deque.salam
دریافت get
روال دریافت(i: صحیح): Ti از ابتدا.نمونهی این مورد همراه با موارد بالاتر آمده است: collections-Deque.salam
آزادسازی free
روال آزادسازی()نمونهی این مورد همراه با موارد بالاتر آمده است: collections-Deque.salam
بردار Vector
ساختار بردار<T>[i] هم میتوانید عضوها را بخوانید و بنویسید.| نام | انگلیسی | گونه | توضیح |
|---|---|---|---|
| data | data | T* | نشانی حافظهی عضوها. |
روال ریشه:
ناپایا و۱ := وکتور {} برگردان وکتور<صحیح>
دیرکن و۱.آزادسازی()
و۱.رزرو(۸)
سرچاپ و۱.طول()، و۱.ظرفیت() >= ۸، و۱.خالی است()
و۱.افزودن(۱۰)
و۱.افزودن(۲۰)
و۱.افزودن(۳۰)
سرچاپ و۱، و۱.اول()، و۱.آخر()، و۱.دریافت(۱)، و۱[۲]
و۱.تنظیم(۰، ۱۱)
و۱[۱] = ۲۲
و۱.درج(۱، ۱۵)
سرچاپ و۱
سرچاپ و۱.حذف در(۱)، و۱.برداشتن()، و۱
ا := و۱.ارجاع(۰)
ا[۰] = ۹۹
سرچاپ و۱
و۱.تنظیم با تغییر اندازه(و۱.طول()، ۷)
سرچاپ و۱
و۱.پاکسازی()
سرچاپ و۱.طول()
ناپایا ص := وکتور {} برگردان وکتور<صحیح>
دیرکن ص.آزادسازی()
ص.صفرها(۳)
سرچاپ ص
ناپایا خ := وکتور {} برگردان وکتور<صحیح>
دیرکن خ.آزادسازی()
خ.تخصیص(۴)
سرچاپ خ.طول()
پایانرزرو reserve
روال رزرو(need: صحیح)need عضو میگیرد تا افزودنهای بعدی حافظه را دوباره جابهجا نکنند.نمونهی این مورد همراه با موارد بالاتر آمده است: collections-Vector.salam
افزودن push
روال افزودن(x: T)نمونهی این مورد همراه با موارد بالاتر آمده است: collections-Vector.salam
برداشتن pop
روال برداشتن(): Tنمونهی این مورد همراه با موارد بالاتر آمده است: collections-Vector.salam
دریافت get
روال دریافت(i: صحیح): Ti را برمیگرداند.نمونهی این مورد همراه با موارد بالاتر آمده است: collections-Vector.salam
ارجاع ref
روال ارجاع(i: صحیح): T*i را برمیگرداند تا بتوانید خودش را تغییر دهید، بدون رونوشت.نمونهی این مورد همراه با موارد بالاتر آمده است: collections-Vector.salam
تنظیم set
روال تنظیم(i: صحیح، x: T)i را جایگزین میکند.نمونهی این مورد همراه با موارد بالاتر آمده است: collections-Vector.salam
تنظیم با تغییر اندازه resize_set
روال تنظیم با تغییر اندازه(i: صحیح، x: T)تنظیم، ولی اگر i از طول بیشتر باشد، وکتور را بزرگ میکند. خانههای بین طول قبلی و i مقدار مشخصی ندارند؛ پس یا بهترتیب پر کنید، یا اول با صفرها بسازید.نمونهی این مورد همراه با موارد بالاتر آمده است: collections-Vector.salam
صفرها zeros
روال صفرها(n: صحیح)n عضو صفر به وکتور میدهد.نمونهی این مورد همراه با موارد بالاتر آمده است: collections-Vector.salam
تخصیص alloc
روال تخصیص(n: صحیح)n میکند، بدون مقداردهی؛ عضوها را پیش از خواندن پر کنید.نمونهی این مورد همراه با موارد بالاتر آمده است: collections-Vector.salam
طول len
روال طول(): صحیحنمونهی این مورد همراه با موارد بالاتر آمده است: collections-Vector.salam
ظرفیت cap
روال ظرفیت(): صحیحنمونهی این مورد همراه با موارد بالاتر آمده است: collections-Vector.salam
خالی است is_empty
روال خالی است(): منطقینمونهی این مورد همراه با موارد بالاتر آمده است: collections-Vector.salam
اول first
روال اول(): Tنمونهی این مورد همراه با موارد بالاتر آمده است: collections-Vector.salam
آخر last
روال آخر(): Tنمونهی این مورد همراه با موارد بالاتر آمده است: collections-Vector.salam
پاکسازی clear
روال پاکسازی()نمونهی این مورد همراه با موارد بالاتر آمده است: collections-Vector.salam
درج insert
روال درج(i: صحیح، x: T)i درج میکند و بقیه را یک خانه جلو میبرد.نمونهی این مورد همراه با موارد بالاتر آمده است: collections-Vector.salam
حذف در remove_at
روال حذف در(i: صحیح): Ti را حذف و برمیگرداند و بقیه را یک خانه عقب میکشد.نمونهی این مورد همراه با موارد بالاتر آمده است: collections-Vector.salam
عملگر اندیس operator_index
روال عملگر اندیس(i: صحیح): Tو۱[i].نمونهی این مورد همراه با موارد بالاتر آمده است: collections-Vector.salam
تنظیم عملگر اندیس operator_index_set
روال تنظیم عملگر اندیس(i: صحیح، x: T)و۱[i] = x.نمونهی این مورد همراه با موارد بالاتر آمده است: collections-Vector.salam
پیمایشگر iter
روال پیمایشگر(): پیمایشگر بردار<T>هر ... در سادهتر است.روال ریشه:
ناپایا و۱ := وکتور {} برگردان وکتور<رشته>
دیرکن و۱.آزادسازی()
و۱.افزودن("بهار")
و۱.افزودن("تابستان")
ناپایا پ := و۱.پیمایشگر()
تا پ.بعدی دارد():
سرچاپ پ.مقدار()
پ.بعدی()
پایان
پایانآزادسازی free
روال آزادسازی()نمونهی این مورد همراه با موارد بالاتر آمده است: collections-Vector.salam
پیمایشگر بردار VectorIter
ساختار پیمایشگر بردار<T>بعدی دارد، مقدار و بعدی عضو به عضو جلو میروید.| نام | انگلیسی | گونه | توضیح |
|---|---|---|---|
| data | data | T* | نشانی عضوهای وکتور. |
| len | len | صحیح = 0 | تعداد عضوها. |
| pos | pos | صحیح = 0 | جای فعلی. |
نمونهی این مورد همراه با موارد بالاتر آمده است: collections-VectorIter.salam
بعدی دارد has_next
روال بعدی دارد(): منطقینمونهی این مورد همراه با موارد بالاتر آمده است: collections-VectorIter.salam
مقدار value
روال مقدار(): Tنمونهی این مورد همراه با موارد بالاتر آمده است: collections-VectorIter.salam
بعدی next
روال بعدی()نمونهی این مورد همراه با موارد بالاتر آمده است: collections-VectorIter.salam
صف Queue
ساختار صف<T>| نام | انگلیسی | گونه | توضیح |
|---|---|---|---|
| inbox | inbox | بردار | عضوهای تازهوارد. |
| outbox | outbox | بردار | عضوهای آمادهی خروج؛ هر وقت خالی شود، از inbox پر میشود. |
واردسازی مجموعه ها
روال ریشه:
ناپایا ص := مجموعه ها.صف {} برگردان مجموعه ها.صف<رشته>
دیرکن ص.آزادسازی()
ص.وارد کردن("مشتری ۱")
ص.وارد کردن("مشتری ۲")
ص.وارد کردن("مشتری ۳")
سرچاپ ص.مشاهده()، ص.اندازه()
سرچاپ ص.خارج کردن()، ص.خارج کردن()، ص.خالی است()
پایانوارد کردن enqueue
روال وارد کردن(x: T)نمونهی این مورد همراه با موارد بالاتر آمده است: collections-Queue.salam
خارج کردن dequeue
روال خارج کردن(): Tنمونهی این مورد همراه با موارد بالاتر آمده است: collections-Queue.salam
مشاهده peek
روال مشاهده(): Tنمونهی این مورد همراه با موارد بالاتر آمده است: collections-Queue.salam
اندازه size
روال اندازه(): صحیحنمونهی این مورد همراه با موارد بالاتر آمده است: collections-Queue.salam
خالی است is_empty
روال خالی است(): منطقینمونهی این مورد همراه با موارد بالاتر آمده است: collections-Queue.salam
آزادسازی free
روال آزادسازی()نمونهی این مورد همراه با موارد بالاتر آمده است: collections-Queue.salam
پشته Stack
ساختار پشته<T>| نام | انگلیسی | گونه | توضیح |
|---|---|---|---|
| items | items | بردار | عضوهای پشته؛ آخرین عضو بالای پشته است. |
واردسازی مجموعه ها
روال ریشه:
ناپایا پ := مجموعه ها.پشته {} برگردان مجموعه ها.پشته<رشته>
دیرکن پ.آزادسازی()
پ.افزودن("کتاب ۱")
پ.افزودن("کتاب ۲")
پ.افزودن("کتاب ۳")
سرچاپ پ.مشاهده()، پ.اندازه()
سرچاپ پ.برداشتن()، پ.برداشتن()، پ.اندازه()
پ.پاکسازی()
سرچاپ پ.خالی است()
پایانافزودن push
روال افزودن(x: T)نمونهی این مورد همراه با موارد بالاتر آمده است: collections-Stack.salam
برداشتن pop
روال برداشتن(): Tنمونهی این مورد همراه با موارد بالاتر آمده است: collections-Stack.salam
مشاهده peek
روال مشاهده(): Tنمونهی این مورد همراه با موارد بالاتر آمده است: collections-Stack.salam
اندازه size
روال اندازه(): صحیحنمونهی این مورد همراه با موارد بالاتر آمده است: collections-Stack.salam
خالی است is_empty
روال خالی است(): منطقینمونهی این مورد همراه با موارد بالاتر آمده است: collections-Stack.salam
پاکسازی clear
روال پاکسازی()نمونهی این مورد همراه با موارد بالاتر آمده است: collections-Stack.salam
آزادسازی free
روال آزادسازی()نمونهی این مورد همراه با موارد بالاتر آمده است: collections-Stack.salam
زوج Pair
ساختار زوج<A، B>| نام | انگلیسی | گونه | توضیح |
|---|---|---|---|
| first | first | A | مقدار اول. |
| second | second | B | مقدار دوم. |
واردسازی مجموعه ها
روال ریشه:
ز := مجموعه ها.زوج { first = "تهران"، second = ۸۷۰۰۰۰۰ } برگردان مجموعه ها.زوج<رشته، صحیح>
سرچاپ ز.first، ز.second
پایانلیست حلقوی CircularList
ساختار لیست حلقوی<T>| نام | انگلیسی | گونه | توضیح |
|---|---|---|---|
| items | items | بردار | عضوها به ترتیب افزودهشدن. |
| head | head | صحیح = 0 | شمارهی عضو فعلی. |
واردسازی مجموعه ها
روال ریشه:
ناپایا ح := مجموعه ها.لیست حلقوی {} برگردان مجموعه ها.لیست حلقوی<رشته>
دیرکن ح.آزادسازی()
هر ن در ["علی"، "سارا"، "رضا"]:
ح.افزودن(ن)
پایان
تکرار ۴:
چاپ ح.جاری()، ""
ح.پیشروی()
پایان
سرچاپ ""
ح.چرخش(۱)
سرچاپ ح.تبدیل به بردار()، ح.دریافت(۰)، ح.اندازه()، ح.خالی است()
پایانافزودن add
روال افزودن(x: T)نمونهی این مورد همراه با موارد بالاتر آمده است: collections-CircularList.salam
اندازه size
روال اندازه(): صحیحنمونهی این مورد همراه با موارد بالاتر آمده است: collections-CircularList.salam
خالی است is_empty
روال خالی است(): منطقینمونهی این مورد همراه با موارد بالاتر آمده است: collections-CircularList.salam
دریافت get
روال دریافت(i: صحیح): Ti خانه جلوتر از عضو فعلی؛ عدد منفی هم پذیرفته است.نمونهی این مورد همراه با موارد بالاتر آمده است: collections-CircularList.salam
چرخش rotate
روال چرخش(k: صحیح)k خانه جلو میبرد (یا با عدد منفی، عقب).نمونهی این مورد همراه با موارد بالاتر آمده است: collections-CircularList.salam
جاری current
روال جاری(): Tنمونهی این مورد همراه با موارد بالاتر آمده است: collections-CircularList.salam
پیشروی advance
روال پیشروی()نمونهی این مورد همراه با موارد بالاتر آمده است: collections-CircularList.salam
تبدیل به بردار to_vector
روال تبدیل به بردار(): بردار<T>نمونهی این مورد همراه با موارد بالاتر آمده است: collections-CircularList.salam
آزادسازی free
روال آزادسازی()نمونهی این مورد همراه با موارد بالاتر آمده است: collections-CircularList.salam
نگاشت درهم HashMap
ساختار نگاشت درهم<K، V>نگاشت مرتب را ببینید.| نام | انگلیسی | گونه | توضیح |
|---|---|---|---|
| keys | keys | K* | نشانی آرایهی کلیدها. |
| vals | vals | V* | نشانی آرایهی مقدارها. |
| state | state | صحیح* | وضعیت هر خانه (خالی، پر یا حذفشده). |
| cap | cap | صحیح = 0 | تعداد خانهها. |
| count | count | صحیح = 0 | تعداد کلیدهای موجود. |
| used | used | صحیح = 0 | تعداد خانههای استفادهشده، شامل حذفشدهها. |
روال ریشه:
ناپایا ن := نگاشت {} برگردان نگاشت<رشته، صحیح>
دیرکن ن.آزادسازی()
سرچاپ ن.خالی است()
ن.قراردادن("سیب"، ۳)
ن.درج("انار"، ۵)
ن.قراردادن("سیب"، ۴)
سرچاپ ن.اندازه()، ن.دارد("سیب")، ن.دریافت("سیب")، ن.دریافت با پیش فرض("موز"، ۰)
سرچاپ ن.حذف("انار")، ن.حذف("انار")، ن.اندازه()
ناپایا پ := ن.پیمایشگر()
تا پ.بعدی دارد():
سرچاپ پ.کلید()، پ.مقدار()
پ.بعدی()
پایان
پایانقراردادن put
روال قراردادن(k: K، v: V)نمونهی این مورد همراه با موارد بالاتر آمده است: collections-HashMap.salam
درج insert
روال درج(k: K، v: V)قراردادن.نمونهی این مورد همراه با موارد بالاتر آمده است: collections-HashMap.salam
دارد has
روال دارد(k: K): منطقینمونهی این مورد همراه با موارد بالاتر آمده است: collections-HashMap.salam
دریافت get
روال دریافت(k: K): Vدارد بپرسید یا دریافت با پیش فرض را به کار ببرید.نمونهی این مورد همراه با موارد بالاتر آمده است: collections-HashMap.salam
دریافت با پیش فرض get_or
روال دریافت با پیش فرض(k: K، def: V): Vنمونهی این مورد همراه با موارد بالاتر آمده است: collections-HashMap.salam
حذف remove
روال حذف(k: K): منطقینمونهی این مورد همراه با موارد بالاتر آمده است: collections-HashMap.salam
اندازه size
روال اندازه(): صحیحنمونهی این مورد همراه با موارد بالاتر آمده است: collections-HashMap.salam
خالی است is_empty
روال خالی است(): منطقینمونهی این مورد همراه با موارد بالاتر آمده است: collections-HashMap.salam
پیمایشگر iter
روال پیمایشگر(): پیمایشگر نگاشت<K، V>هر (کلید، مقدار) در سادهتر است.نمونهی این مورد همراه با موارد بالاتر آمده است: collections-HashMap.salam
آزادسازی free
روال آزادسازی()نمونهی این مورد همراه با موارد بالاتر آمده است: collections-HashMap.salam
پیمایشگر نگاشت MapIter
ساختار پیمایشگر نگاشت<K، V>| نام | انگلیسی | گونه | توضیح |
|---|---|---|---|
| keys | keys | K* | نشانی آرایهی کلیدها. |
| vals | vals | V* | نشانی آرایهی مقدارها. |
| state | state | صحیح* | وضعیت خانهها. |
| cap | cap | صحیح = 0 | تعداد خانهها. |
| pos | pos | صحیح = 0 | جای فعلی. |
نمونهی این مورد همراه با موارد بالاتر آمده است: collections-HashMap.salam
بعدی دارد has_next
روال بعدی دارد(): منطقینمونهی این مورد همراه با موارد بالاتر آمده است: collections-HashMap.salam
کلید key
روال کلید(): Kنمونهی این مورد همراه با موارد بالاتر آمده است: collections-HashMap.salam
مقدار value
روال مقدار(): Vنمونهی این مورد همراه با موارد بالاتر آمده است: collections-HashMap.salam
بعدی next
روال بعدی()نمونهی این مورد همراه با موارد بالاتر آمده است: collections-HashMap.salam
روالها
دارد contains
روال دارد<T>(v: بردار<T>، x: T): منطقیx در وکتور باشد، درست برمیگرداند.واردسازی مجموعه ها
روال ریشه:
ناپایا الف := وکتور {} برگردان وکتور<صحیح>
دیرکن الف.آزادسازی()
هر ع در [۱، ۲، ۳، ۲، ۵]:
الف.افزودن(ع)
پایان
سرچاپ مجموعه ها.دارد(الف، ۳)، مجموعه ها.اندیس(الف، ۲)، مجموعه ها.آخرین اندیس(الف، ۲)، مجموعه ها.شمارش(الف، ۲)
سرچاپ مجموعه ها.برعکس(الف)، مجموعه ها.برش(الف، ۱، ۳)
ب := مجموعه ها.رونوشت(الف)
مجموعه ها.جابجایی(الف، ۰، ۴)
سرچاپ الف، ب
ناپایا ج := وکتور {} برگردان وکتور<صحیح>
دیرکن ج.آزادسازی()
مجموعه ها.گسترش(ج، ب)
مجموعه ها.گسترش(ج، ب)
سرچاپ ج.طول()
پایاناندیس index_of
روال اندیس<T>(v: بردار<T>، x: T): صحیحx، یا منفی یک.نمونهی این مورد همراه با موارد بالاتر آمده است: collections-Funcs.salam
برعکس reverse
روال برعکس<T>(v: بردار<T>): بردار<T>نمونهی این مورد همراه با موارد بالاتر آمده است: collections-Funcs.salam
رونوشت clone
روال رونوشت<T>(v: بردار<T>): بردار<T>نمونهی این مورد همراه با موارد بالاتر آمده است: collections-Funcs.salam
برش slice
روال برش<T>(v: بردار<T>، start: صحیح، count: صحیح): بردار<T>count عضو از جای start.نمونهی این مورد همراه با موارد بالاتر آمده است: collections-Funcs.salam
جابجایی swap
روال جابجایی<T>(v: بردار<T>، i: صحیح، j: صحیح)نمونهی این مورد همراه با موارد بالاتر آمده است: collections-Funcs.salam
شمارش count_of
روال شمارش<T>(v: بردار<T>، x: T): صحیحx در وکتور.نمونهی این مورد همراه با موارد بالاتر آمده است: collections-Funcs.salam
آخرین اندیس last_index_of
روال آخرین اندیس<T>(v: بردار<T>، x: T): صحیحx، یا منفی یک.نمونهی این مورد همراه با موارد بالاتر آمده است: collections-Funcs.salam
گسترش extend
روال گسترش<T>(dst &: بردار<T>، src: بردار<T>)src را به انتهای dst اضافه میکند.نمونهی این مورد همراه با موارد بالاتر آمده است: collections-Funcs.salam