资源描述
试验一 多项式相加一. 实验内容:多项式相加二.实验目的和要求:利用双向链表实现通讯录的建立、删除、检索和列表,并可保存至文件,可重新装入。用链式存储结构实现一元多项式的相加运算。三算法思想描述:1. 以单链表为存储结构插入多项式: 多项式输入:多项式按幂从高到低,以“系数,幂”的格式输入,并以“0,0”结束。printf(Please input coef:);scanf(%d,&i);printf(Please input exp: );scanf(%d,&j);while(i!=0)q=(pnode)malloc(sizeof(struct node);q-coef=i;q-exp=j;p-link=q;p=q;printf(Please input coef:);scanf(%d,&i);printf(Please input exp: );scanf(%d,&j);p-link=NULL;2. 多项式相加 单链表合并:由两个多项式对应的单链表头节点开始,依次扫描各节点。(1)若两表的节点均非空:比较二者的幂,按幂大者先入表。如果幂相等,则系数相加再入表。具体由以下代码实现:while(p!=NULL & q!=NULL)if(p-exp=q-exp)x=p-coef+q-coef;if(x!=0)s=(pnode)malloc(sizeof(struct node);s-coef=x;s-exp=p-exp;r-link=s;r=s;p=p-link;q=q-link;else if(p-expexp)s=(pnode)malloc(sizeof(struct node);s-coef=q-coef;s-exp=q-exp;r-link=s;r=s;q=q-link; elses=(pnode)malloc(sizeof(struct node); s-coef=p-coef;s-exp=p-exp;r-link=s;r=s;p=p-link;(2). 若有一链表已空,则将非空链表插入新表:while(p!=NULL) s=(pnode)malloc(sizeof(struct node); s-coef=p-coef;s-exp=p-exp;r-link=s;r=s;p=p-link;while(q!=NULL) s=(pnode)malloc(sizeof(struct node); s-coef=q-coef;s-exp=q-exp;r-link=s;r=s; q=q-link;3. 输出合并后的链表:while(head-link!=NULL) head=head-link; printf( %d*x%d,head-coef,head-exp); 4. 主函数调用,完成多项式相加。四程序结构:1.数据结构typedef struct nodeint coef; /*系数*/int exp; /*幂*/struct node *link; 下一个结点的指针*/ *pnode; /*多项式结点的指针*/2. 函数功能说明pnode create():建立一个多项式链表pnode add(pnode heada,pnode headb): 两个多项式单链表合并void node(pnode head): 输出多项式单链表五测试结果与分析上述程序在Visual C+ 6.0环境下加以实现。经过多次测试,程序运行正确。结果如图:六收获与体会通过这次课程设计:1. 我又进一步巩固了C语言的基础。2. 通过程序加深了对链表方面知识的认识。3. ,提高了自己的编程能力,4. 程序不够简洁,还有待改进,功能还有待更完善。
展开阅读全文