Chả là hôm thực hành "Cấu trúc dữ liệu và giải thuật", giảng viên có hướng dẫn làm cái thư viện với đề như trên tiêu đề. Nhưng có phần (trong dấu /**/) em chưa hiểu rõ lắm. Ai có thời gian hướng dẫn em xíu ạ. EM CẢM ƠN


C++ Code:
  1. #include<stdio.h>
  2. #include<stdlib.h>
  3. #include <conio.h>
  4. #include <malloc.h>
  5.  
  6. typedef int ElementType;
  7. typedef struct Node
  8. {
  9.     ElementType HeSo;
  10.     ElementType SoMu;
  11.     struct Node *Next;
  12. }Node;
  13.  
  14. typedef Node *Position;
  15. typedef Position List;
  16.  
  17. void MakeNull_List(List *Header)
  18. {
  19.     (*Header) = (Node *)malloc(sizeof(Node));
  20.     (*Header)->Next = NULL;
  21. }
  22.  
  23. Position First_List(List L)
  24. {
  25.     return L;
  26. }
  27.  
  28. Position End_List(List L)
  29. {
  30.     Position P;
  31.     P = L;
  32.     while(P->Next != NULL)
  33.         P = P->Next;
  34.     return P;
  35. }
  36.  
  37. void Insert_List(ElementType HeSo, ElementType SoMu, Position P, List L)
  38. {
  39.     Position T;
  40.     T = (Node *)malloc(sizeof(Node));
  41.     T->HeSo = HeSo;
  42.     T->SoMu = SoMu;
  43.     T->Next = P->Next;
  44.     P->Next = T;
  45. }
  46.  
  47. void Read_List(List *L)
  48. {
  49.     printf("Da thuc co dang: P(n) = a(0)x^0 + a(1)x^1 + a(2)x^2 + ... + a(n)x^n\n");
  50.     unsigned int i, n;
  51.     ElementType HeSo, SoMu;
  52.     MakeNull_List(L);
  53.     printf("Nhap n =  "); scanf("%d", &n);
  54.     fflush(stdin);
  55.     for(i = 0; i <= n; i++)
  56.     {
  57.         printf(" Nhap a(%d) = ", i);
  58.         scanf("%d", &HeSo);
  59.         Insert_List(HeSo, i, End_List(*L), *L);
  60.     }
  61. }
  62.  
  63. void Print_List(List L)
  64. {
  65.     while(L != End_List(L))
  66.     {
  67.         if(L->Next->HeSo == 0)
  68.             L = L->Next;
  69.         else if(L->Next->SoMu == 0 && L->Next->HeSo != 0)
  70.         {
  71.             printf(" + %d", L->Next->HeSo);
  72.             L = L->Next;
  73.         }
  74.         else if(L->Next->SoMu == 1)
  75.         {
  76.             printf(" + %dx", L->Next->HeSo);
  77.             L = L->Next;
  78.         }
  79.         else
  80.         {
  81.             printf(" + ");
  82.             printf("%dx^%d", L->Next->HeSo, L->Next->SoMu);
  83.             L = L->Next;
  84.         }
  85.     }
  86.     printf("\n");
  87. }
  88.  
  89. ElementType SoMu(int x, int y)
  90. {
  91.     if(y == 0)
  92.         return 1;
  93.     else
  94.         return (y <= 1) ? x:(SoMu(x, y-1)*x);
  95. }
  96.  
  97. /*ElementType GiaTriDaThuc(ElementType x, List L)
  98. {
  99.     ElementType r = 0;
  100.     while(L != End_List(L))
  101.     {
  102.         r += L->Next->HeSo * SoMu(x, L->Next->SoMu);
  103.         L = L->Next;
  104.     }
  105.     return r;
  106. }
  107.  
  108. void DaoHam(List L)
  109. {
  110.     while(L != End_List(L))
  111.         if(L->Next->SoMu == 0)
  112.         {
  113.             L->Next->HeSo = 0;
  114.             L = L->Next;
  115.         }
  116.         else
  117.         {
  118.             L->Next->HeSo *= L->Next->SoMu;
  119.             L->Next->SoMu --;
  120.             L = L->Next;
  121.         }
  122. }*/

DaThucLIB.CPPDaThucLIB.CPP