/*

  • 这段代码实现了一个多项式的存储和打印功能 */

#include<stdio.h> #include<string.h> #include<stdlib.h>

typedef struct node { int coef; // 系数 int expn; // 指数 struct node *next; // 下一个节点的指针 }Node, *List;

/*

  • 创建一个多项式链表
  • 参数i为多项式的项数
  • 返回一个指向链表头节点的指针 */ List Creat(int i) { List head; // 头节点 head = (List)malloc(sizeof(Node)); // 分配内存空间 List pre, pnew; // 前一个节点和新节点 pre = head; char a,b; for(int j = 0; j <= i; j++) { pnew = (List)malloc(sizeof(Node)); // 输入每一项的系数和指数 scanf("%c%d,%d%c", &a, &pnew->coef, &pnew->expn, &b); pre -> next = pnew; // 将新节点连接到链表中 pre = pnew; // 更新前一个节点为当前节点 } return head; }

/*

  • 打印多项式
  • 参数head为链表头节点的指针 */ void Print(List head) { List q = head->next->next; // 从第一个节点开始打印 int flag = 1; // 标记是否为第一个节点 if(!q) { putchar('0'); // 如果链表为空,则打印0 printf("\n"); return; } while(q) { if(q->coef > 0 && flag != 1) { // 如果系数大于0且不是第一个节点,则打印+ putchar('+'); } if(q->coef != 1 && q->coef != -1) { // 如果系数不是1或-1,则打印系数 printf("%d", q->coef); if(q->expn == 1) { // 如果指数为1,则打印X putchar('X'); } else if (q->expn) { // 如果指数不为0,则打印X^指数 printf("X^%d", q->expn); } } else { if(q->coef == 1) { // 如果系数为1 if(!q->expn) { // 如果指数为0,则打印1 putchar('1'); } else if (q->expn == 1) { // 如果指数为1,则打印X putchar('X'); } else { // 否则打印X^指数 printf("X^%d", q->expn); } } if(q->coef == -1) { // 如果系数为-1 if(!q->expn) { // 如果指数为0,则打印-1 printf("-1"); } else if(q->expn == 1) { // 如果指数为1,则打印-X printf("-X"); } else { // 否则打印-X^指数 printf("-X^%d", q->expn); } } } q = q->next; // 更新当前节点为下一个节点 flag++; // 更新标记 } }

int main() { int i; scanf("%d", &i); // 输入多项式的项数 List head; head = Creat(i); // 创建链表 Print(head); // 打印链表 }


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

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