Guest User

Untitled

a guest
Nov 23rd, 2017
74
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.24 KB | None | 0 0
  1. /* 程式範例: createPoly.c */
  2. /* 函數: 建立多項式的串列 */
  3. PList createPoly(int len, float *array)
  4. {
  5. int i;
  6. PList first, ptr, newnode; /* 建立開頭節點 */
  7. first = (PList) malloc(sizeof(PNode));
  8. first->coef = 0.0; /* 建立開頭節點的內容 */
  9. first->exp = -1;
  10. ptr = first; /* 前一個節點指標 */
  11. for ( i = len-1; i >= 0; i-- )
  12. {
  13. if ( array[i] != 0.0 )
  14. {
  15. /* 配置節點記憶體 */
  16. newnode = (PList) malloc(sizeof(PNode));
  17. newnode->coef = array[i]; /* 建立節點的內容 */
  18. newnode->exp = i;
  19. ptr->next = newnode; /* 連結新節點 */
  20. ptr = newnode; /* 成為前一個節點 */
  21. }
  22. }
  23. ptr->next = first; /* 連結第1個節點, 建立環狀串列 */
  24. return first;
  25. }
  26. /* 函數: 顯示多項式 */
  27. void printPoly(PList first)
  28. {
  29. PList ptr = first->next; /* 串列真正的開頭 */
  30. float c;
  31. int e;
  32. while ( ptr != first ) /* 顯示主迴圈 */
  33. {
  34. c = ptr->coef;
  35. e = ptr->exp;
  36. printf("%3.1fX^%d", c, e);
  37. ptr = ptr->next; /* 下一個節點 */
  38. if ( ptr != first ) printf("+");
  39. }
  40. printf("\n");
  41. }
Add Comment
Please, Sign In to add comment