7-2 一元多项式的乘法与加法运算 (20 分)
这是在浙大MOOC数据结构的一道课后题,可是浪费了我很多的时间大约4,5个小时。
感觉这道题的逻辑并不复杂,也不是很难,但就是没能构想出他的整个的运行过程,导致在编程的时候浪费了大量的时间。
总结了以下的经验教训:
1、尽量把功能封装好,明确输入输出。完成测试。
2、做好初始化,对List的初始化。
3、在程序运行出错时,多printf()关键的中间过程,就例如乘法中每一步相乘的结果(要是这里早打印出来看看,或许能省很多时间)。
4、如果程序一直有问题,可以从头梳理一遍程序的逻辑看哪里有问题。
#include <stdio.h>
#include <stdlib.h>
//定义链表结构
typedef int ElementType;
typedef struct LNode *List;
struct LNode{
ElementType ceof; //多项式系数
ElementType expon; //多项式指数
List Next; //指向下一个结点
};
//函数定义
void Insert(ElementType ceof,ElementType expon,List Ptrl); //插入
List CreateList(); //建立空表
List multi(List p1,List p2); //乘法
List Plus(List p1,List p2); //加法
int compare(List p1,List p2); //比较指数
int main()
{
List p1,p2;
List p;
p1 = CreateList();
p2 = CreateList();
int num1,num2;
int ceof,expon;
int i;
scanf("%d",&num1);
for(i=0;i<num1;i++){
scanf("%d %d",&ceof,&expon);
Insert(ceof,expon,p1);
}
scanf("%d",&num2);
for