C语言链表实现一元n次多项式输入输出
C语言链表实现一元n次多项式输入输出
本文将介绍如何使用C语言链表实现一元n次多项式的输入输出功能。
一、问题描述
一元n次多项式定义如下:
F(X) = A[n]X^n + A[n-1]X^(n-1) + ... + A[1]X + A[0]
其中 A[i] 为实数,i为不小于0的整数。
我们需要实现以下功能:
- 输入多项式: 输入各个系数 A[i] 和指数 i,创建一个多项式。2. 输出多项式: 将创建的多项式输出为
F(X) = A[n]X^n + ... + A[1]X + A[0]的形式。
二、链表实现
我们将使用链表来存储多项式的各项。每个节点包含以下信息:
- 系数 (coefficient)* 指数 (exponent)* 指向下一个节点的指针 (next)
三、C语言代码示例
以下是使用链表实现一元n次多项式输入输出的C语言代码示例:c#include <stdio.h>#include <stdlib.h>
// 定义多项式的节点结构typedef struct Node { float coefficient; // 系数 int exponent; // 指数 struct Node* next; // 下一个节点指针} Node;
// 创建多项式Node* createPolynomial() { float coefficient; int exponent; Node* head = NULL; Node* tail = NULL;
printf('输入一元n次多项式各项,以 0,0 结束输入:
');
while (1) { scanf('%f,%d', &coefficient, &exponent); if (coefficient == 0 && exponent == 0) { break; // 输入结束 }
// 创建节点 Node* newNode = (Node*)malloc(sizeof(Node)); newNode->coefficient = coefficient; newNode->exponent = exponent; newNode->next = NULL;
if (tail == NULL) { head = tail = newNode; // 第一个节点 } else { tail->next = newNode; // 添加到链表尾部 tail = newNode; } }
return head;}
// 输出多项式void printPolynomial(Node* head) { Node* current = head; int firstTerm = 1;
while (current != NULL) { if (current->coefficient != 0) { if (!firstTerm && current->coefficient > 0) { printf(' + '); }
if (current->exponent > 1) { printf('%.1fX^%d', current->coefficient, current->exponent); } else if (current->exponent == 1) { printf('%.1fX', current->coefficient); } else { printf('%.1f', current->coefficient); }
firstTerm = 0; }
current = current->next; }
printf('
');}
// 释放多项式的内存void freePolynomial(Node* head) { Node* current = head;
while (current != NULL) { Node* temp = current; current = current->next; free(temp); }}
int main() { Node* polynomial = createPolynomial();
printf('多项式的输出为:'); printPolynomial(polynomial);
freePolynomial(polynomial);
return 0;}
四、代码说明
Node结构体定义了链表节点,包含系数、指数和指向下一个节点的指针。2.createPolynomial()函数创建链表,接收用户输入的系数和指数,并创建对应的节点。3.printPolynomial()函数遍历链表,并按照多项式的形式输出。4.freePolynomial()函数释放链表占用的内存空间。
五、总结
本文介绍了如何使用C语言链表实现一元n次多项式的输入输出。链表是一种灵活的数据结构,可以方便地存储和操作多项式。
原文地址: https://www.cveoy.top/t/topic/jQK 著作权归作者所有。请勿转载和采集!