写出用链表对一元多项式进行初始化的函数
时间: 2024-09-18 20:10:54 浏览: 33
在使用链表表示一元多项式时,你可以定义一个`PolynomialNode`结构体,用于存储系数和指数。初始化函数可以接收一个字符串作为输入,这个字符串包含多项式的系数和指数按照特定格式排列。以下是一个简单的C语言函数示例,它接受一个字符串并构建链表:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
// 定义节点结构体
typedef struct Node {
int coefficient;
int exponent;
struct Node* next;
} PolynomialNode;
// 初始化链表的辅助函数
void initListNode(PolynomialNode** head, char* str) {
PolynomialNode* newNode = (PolynomialNode*)malloc(sizeof(PolynomialNode));
newNode->coefficient = 1; // 默认系数为1
newNode->exponent = atoi(str); // 读取字符串中的指数
newNode->next = NULL;
*head = newNode;
// 遍历字符串寻找下一个系数和指数
char* token = strtok(str, " ");
while (token != NULL) {
newNode->coefficient = atoi(token);
token = strtok(NULL, " ");
newNode->next = (PolynomialNode*)malloc(sizeof(PolynomialNode));
newNode->next->coefficient = newNode->coefficient;
newNode->next->exponent = atoi(token);
newNode = newNode->next;
}
}
// 主函数调用
void createPolynomialList(char* input, PolynomialNode** head) {
if (input == NULL) {
*head = NULL;
return;
}
initListNode(head, input);
}
// 示例:
char input[] = "1 3 2 4";
PolynomialNode* polynomialList;
createPolynomialList(input, &polynomialList);
// 使用结束后别忘了释放内存
void freeList(PolynomialNode* head) {
PolynomialNode* temp;
while (head) {
temp = head;
head = head->next;
free(temp);
}
}
```
这个函数假设输入字符串中的数字之间用空格分隔,第一个数字是当前多项式的系数,第二个数字是指数。例如,输入 "1 3 2 4" 表示多项式 x^3 + 2x^4。