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的整数。

我们需要实现以下功能:

  1. 输入多项式: 输入各个系数 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;}

四、代码说明

  1. Node 结构体定义了链表节点,包含系数、指数和指向下一个节点的指针。2. createPolynomial() 函数创建链表,接收用户输入的系数和指数,并创建对应的节点。3. printPolynomial() 函数遍历链表,并按照多项式的形式输出。4. freePolynomial() 函数释放链表占用的内存空间。

五、总结

本文介绍了如何使用C语言链表实现一元n次多项式的输入输出。链表是一种灵活的数据结构,可以方便地存储和操作多项式。

C语言链表实现一元n次多项式输入输出

原文地址: https://www.cveoy.top/t/topic/jQK 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录