• 顺序表存储一元多项式,并实现两个多项式相加运算(C++,无序输入)


             采用顺序表存储一元多项式,并实现两个多项式相加运算,要求:

    1)创建存储多项式的有序表(按无序输入)hahb

    2)求hahb相加产生多项式hc

    3)输出多项式hahbhc

    1. #include
    2. #include
    3. using namespace std;
    4. typedef struct node
    5. {
    6. int coef;//系数
    7. int expn;//指数
    8. }Elem;
    9. typedef struct node1
    10. {
    11. Elem* base;
    12. int length;
    13. }Ss;
    14. bool cmp1(node a, node b)
    15. {
    16. return a.expn < b.expn;//指数大的往后
    17. }
    18. void Init(Ss& s)//初始化
    19. {
    20. s.base = new Elem[1000];
    21. s.length = 0;
    22. }
    23. void Create(Ss& s)//创建多项式
    24. {
    25. cout << "输入项数:";
    26. cin >> s.length;
    27. cout << "先输指数再输系数:" << endl;
    28. for (int i = 0; i < s.length; i++)
    29. cin >> s.base[i].expn >> s.base[i].coef;
    30. sort(s.base, s.base + s.length, cmp1);//根据指数升序排序
    31. }
    32. void Add(Ss& ha, Ss& hb, Ss& hc)//合并多项式
    33. {
    34. int i = 0, j = 0, k = 0;
    35. while (ha.length && hb.length)
    36. {
    37. hc.length++;
    38. if (ha.base[i].expn == hb.base[j].expn)//指数相等
    39. {
    40. ha.length--, hb.length--;
    41. int sum = ha.base[i].coef + hb.base[j].coef;
    42. if (sum == 0)
    43. continue;
    44. else
    45. {
    46. hc.base[k].coef = sum;
    47. hc.base[k++].expn = ha.base[i].expn;
    48. }
    49. i++, j++;
    50. }
    51. else if (ha.base[i].expn < hb.base[j].expn)//ha指数小于hb指数
    52. {
    53. ha.length--;
    54. hc.base[k].coef = ha.base[i].coef;
    55. hc.base[k++].expn = ha.base[i].expn;
    56. i++;
    57. }
    58. else//hb指数小于ha指数
    59. {
    60. hb.length--;
    61. hc.base[k].coef = hb.base[j].coef;
    62. hc.base[k++].expn = hb.base[j].expn;
    63. j++;
    64. }
    65. }
    66. if (ha.length == 0)//ha连完 剩下连hb
    67. {
    68. for (int d = j; d < hb.length; d++)
    69. {
    70. hc.base[k].coef = hb.base[d].coef;
    71. hc.base[k++].expn = hb.base[d].expn;
    72. }
    73. }
    74. else if (hb.length == 0)//hb连完 剩下连ha
    75. {
    76. for (int d = j; d < ha.length; d++)
    77. {
    78. hc.base[k].coef = ha.base[d].coef;
    79. hc.base[k++].expn = ha.base[d].expn;
    80. }
    81. }
    82. }
    83. void Print(Ss s)//输出多项式
    84. {
    85. int i;
    86. cout << "f=";
    87. for (i = 0; i < s.length - 1; i++)
    88. {
    89. if (s.base[i].expn == 0)
    90. cout << s.base[i].coef << " + ";
    91. else
    92. cout << s.base[i].coef << "x^" << s.base[i].expn << " + ";
    93. }
    94. cout << s.base[i].coef << "x^" << s.base[i].expn;
    95. cout << endl;
    96. }
    97. int main()
    98. {
    99. Ss ha, hb, hc;
    100. Init(ha);
    101. Create(ha);
    102. Init(hb);
    103. Create(hb);
    104. cout << "多项式1:" << endl;
    105. Print(ha);
    106. cout << "多项式2:" << endl;
    107. Print(hb);
    108. Init(hc);
    109. Add(ha, hb, hc);
    110. cout << "合并多项式:" << endl;
    111. Print(hc);
    112. }

  • 相关阅读:
    elementui组件兼容移动端
    GPU如何统计显存占用
    WPF 防止按钮Click时间多次点击响应
    深度学习基础-优化算法详解
    IIs部署发布vue项目测试环境
    顾樵 量子力学I 导读(1)
    新版Ai企业级系统去授权版本完美运行
    李嗣涔教授:挠场的科学
    LeetCode每日一题:实现strStr()
    SpringCloud微服务(十二)——Seata分布式事务
  • 原文地址:https://blog.csdn.net/qq_74156152/article/details/133660636