السلام عليكم ...
لدي الكود التالي ولقد نقلته من الانترنت وحاولت استيعابه فتمكنت من ذلك جزئيا وهو مختص باحد انواع الفرز في هياكل تراكيب البيانات ..
#include <stdio.h>
#define MAX 5
#define SHOWPASS
void print(int *a, int n)
{
int i;
for (i = 0; i < n; i++)
printf("%d\t", a);
}
void radixsort(int *a, int n)
{
int i, b[MAX], m = 0, exp = 1;
for (i = 0; i < n; i++)
{
if (a > m)
m = a;
}
while (m / exp > 0)
{
int bucket[10] =
{
0
};
for (i = 0; i < n; i++)
bucket[a / exp % 10]++;
for (i = 1; i < 10; i++)
bucket += bucket[i - 1];
for (i = n - 1; i >= 0; i--)
b[--bucket[a / exp % 10]] = a;
for (i = 0; i < n; i++)
a = b;
exp *= 10;
#ifdef SHOWPASS
printf("\nPASS : ");
print(a, n);
#endif
}
}
int main()
{
int arr[MAX];
int i, n;
printf("Enter total elements (n < %d) : ", MAX);
scanf("%d", &n);
printf("Enter %d Elements : ", n);
for (i = 0; i < n; i++)
scanf("%d", &arr);
printf("\nARRAY : ");
print(&arr[0], n);
radixsort(&arr[0], n);
printf("\nSORTED : ");
print(&arr[0], n);
printf("\n");
return 0;
}فيا حبذا لو من يشرح هذا الكود او يقدم كود ابسط منه ...علما باني ليس الكود نفسه ليس هدفي وانما مطلوب مني كود مشابه لكلمات وليس ارقام ...ضمن تراكيب بيانات وقوائم متصلة..طرحت المشاكل التي واجهتها في مواضيع سابقة...
وانا اعرف ان هنالك جملة
RETURN(NUM/POW(10,I))%10
تعيد القيمة العشرية لكل رقم حسب منزلته .. وعذرا نقلتها دون التركيز على الاقواس..