شما در یک شرکت پخش آنلاین موسیقی کار میکنید.
به شما سپرده شده است که برای اپلیکیشن پخش موسیقیتان قابلیت «پخشلیست» را بسازید.
نمونهای اولیه از برنامهی پخشکنندهی موسیقی بنویسید.
در این نمونهی اولیه، هر آهنگ بهسادگی با یک عدد نشان داده میشود. با داشتن بازهای از اعداد (شناسههای آهنگ)، یک لیست پیوندی یکطرفه بسازید.
با داشتن یک لیست پیوندی یکطرفه، باید بتوانید لیست را معکوس کنید تا آهنگها را به ترتیب معکوس پخش کنید.
لیست پیوندی یک ساختار دادهی بنیادی در علوم کامپیوتر است که اغلب در پیادهسازی ساختارهای دادهی دیگر به کار میرود.
سادهترین نوع لیست پیوندی، لیست پیوندی یکطرفه است. یعنی هر عنصر (یا «گره») شامل داده است، همراه با چیزی که به گرهی بعدی در لیست اشاره میکند.
اگر میخواهید بیشتر در مورد لیستهای پیوندی کاوش کنید، این مقاله را ببینید که آن را با تصاویر زیبا توضیح میدهد.
یک چندتایی linked-list-node تعریف کنید.
یک چندتایی linked-list تعریف کنید و یک متد M: linked-list length (از sequences) فراهم کنید تا تستها بتوانند length را مستقیماً روی لیست شما فراخوانی کنند.
<linked-list> ( -- linked-list ) یک لیست خالی میسازد.>linked-list ( seq -- linked-list ) هر عنصر seq را به ترتیب روی یک لیست تازه اضافه میکند.linked-list>array ( linked-list -- array ) مقدارها را برمیگرداند، با شروع از بالای لیست.list-push ( linked-list value -- linked-list ) یک مقدار را روی بالای لیست اضافه میکند.list-pop ( linked-list -- linked-list value ) مقدار بالای لیست را حذف میکند و آن را برمیگرداند.list-peek ( linked-list -- value ) مقدار بالای لیست را بدون حذف کردن آن برمیگرداند.list-reverse ( linked-list -- linked-list ) لیستی را برمیگرداند که عناصر آن در ترتیب معکوس قرار دارند.وقتی لیست خالی است، از list-pop و list-peek یک کلاس خطای list-empty پرتاب کنید.