Practice #4
الدرس 12 من 12 في دورة Queue - سلسلة هياكل البيانات #2 على Coddy.
تم تصميم التحديات التالية لاستخدام طابور (queue). إنّ بنية البيانات Queue متوفرة لك بالفعل — استخدمها!
التحدي
سهلاكتب دالة باسم hotPotato تستقبل قائمة من الأسماء وعددًا من الرميات (tosses)، وتُحاكي لعبة البطاطا الساخنة: يتم تمرير البطاطا tosses من المرات (كل تمريرة تنقل الشخص الموجود في المقدمة إلى الخلف)، ثم يتم استبعاد الشخص الموجود حاليًا في المقدمة. كرر ذلك حتى يتبقى شخص واحد فقط، وأعد اسمه.
استخدم الـ Queue المقدم لحل هذه المشكلة!
جرّب بنفسك
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include "solution.h"
int main() {
char line[4096];
char** names = (char**)malloc(sizeof(char*) * 1000);
int n = 0;
if (fgets(line, sizeof(line), stdin)) {
char* tok = strtok(line, " \t\r\n");
while (tok) { names[n++] = strdup(tok); tok = strtok(NULL, " \t\r\n"); }
}
int tosses = 0;
scanf("%d", &tosses);
printf("%s\n", hotPotato(names, n, tosses));
return 0;
}