数据结构第二次实验报告
四、调试分析
实验中遇到的最主要的问题是(1)当用户输入的多项式幂次是混乱的时候如何正确的输出计算结果,在本算法中即转化为如何对读入的多项式按降幂排序。本程序的排序算法是基于链表的插入排序,而我一开始的想法是用双链表实现排序(双链表有前驱节点指针,可以访问某一节点的前驱),但实现的时候却发现双链表比较复杂,由于多了一个指针,使算法中的指针指向显得更加混乱而且很容易出错。而后便改用单链表编写。(2)由于单链表中含有一指针项,因此指针的指向逻辑就必须非常清楚,在判断链表是否遍历完全时也遇到了一些问题。
五、测试结果
样例1
输入多项式的项数5
输入多项式的各项(系数在前 幂次在后) 3 8 7 9 6 5 4 13 5 7
输入的多项式是+4x^13+7x^9+3x^8+5x^7+6x^5 输入多项式的项数4
输入多项式的各项(系数在前 幂次在后)
数据结构第二次实验报告
9 15 -7 9 6 4 3 2
输入的多项式是+9x^15-7x^9+6x^4+3x^2 他们求和后的多项式是
+9x^15+4x^13+3x^8+5x^7+6x^5+6x^4+3x^2 样例二
输入多项式的项数4
输入多项式的各项(系数在前 幂次在后) 1.5 8 2.3 9 3 8 4 6
输入的多项式是+2.3x^9+1.5x^8+3x^8+4x^6 输入多项式的项数4
输入多项式的各项(系数在前 幂次在后) -2.3 8 3 9 4 7 3 0
输入的多项式是+3x^9-2.3x^8+4x^7+3x^0
数据结构第二次实验报告
他们求和后的多项式是
+5.3x^9-0.8x^8+3x^8+4x^7+4x^6+3x^0
六、用户使用说明
1、本程序的执行环境为visualc++ 2、运行程序时 提示输入
输入多项式的项数//第一个多项式的项数(整型,正整数) 输入多项式的各项(系数在前 幂次在后)//输入第一个多项式即可
输入的多项式是//输出第一个多项式(降幂输出) 输入多项式的项数//第二个多项式的项数(整型,正整数) 输入多项式的各项(系数在前 幂次在后)//输入第二个多项式即可
输入的多项式是//输出第二个多项式(降幂输出)
他们求和后的多项式是//输出求和后的结果
七、实验心得
通过实验,我对链表的应用更加熟悉,同时掌握了基于对链表的插入排序算法,也发现了自己的一些不足之处。本次试验中在插入算法的设计中我消耗了很多时间,原因在于一开始并没有分析透彻就急于上手编程,从而导致开始的很多次失败…而且通过与同学的交流我发现基本的算法思想每个人都知道,但差别就在与代码的强壮、简洁、高
数据结构第二次实验报告
效、易懂。这是以后的程序中需要注意和努力的地方。
八、附录
代码
//多项式的加法 #include
class Node{ public: };
class sNode{ public:
sNode(int size=0){ this->size= size;Init();} double vol; double no; Node* next;
void setpHead();
Node* Remove(Node* t1); Node* Insert(); void setPloy();
void Print(double m,double n); void PrintInfo();
数据结构第二次实验报告
void PloyAdd(sNode s1,sNode s2);
private: };
void sNode::setpHead(){ }
Node* sNode:: Remove(Node* t1){
fence = pHead;
if(t1->no > pHead->no ){
t1->next = pHead; pHead = t1;
cin>>pHead->vol >>pHead->no ; size++; Node* pHead; Node* fence; int size; void Init(){ }
pHead = new Node(); pHead->next = NULL; fence = pHead;