一元多项式的相加 数据结构链表实现
2015-10-11 20:54
549 查看
#include<stdio.h> #include<stdlib.h> typedef struct Node { float coe; //系数 int index; //指数 Node *next; }*polynomial; //操作名 void Initpolynomial(polynomial &L) //创建链表的头结点 { polynomial P = (polynomial)malloc(sizeof(Node)); P->next =NULL; P->coe = -1.0; P->index = -1; L = P; } void Createpolynomial(polynomial &L,float coe,int index) //在链表尾部输入数据 { polynomial P = (polynomial)malloc(sizeof(Node)); P->coe = coe; P->index =index; polynomial S = (polynomial)malloc(sizeof(Node)); //用来调整在链表末尾输入数据 S = L; while(S->next) S = S->next; P->next = S->next; S->next = P; } void showpolynomial(polynomial L) //用来输出链表 { while(L) { printf("(系数%.2f 指数%d)",L->coe,L->index); L = L->next; } printf("\n"); } polynomial Addpolymial(polynomial Pa,polynomial Pb) //表一 表二 相加结果存放在表三中 { polynomial head = (polynomial)malloc(sizeof(Node)); //主要是几个对象的问题需要两个来移动一个来存储一个来当头结点 最后返回///头结点这就是核心 Initpolynomial(head); polynomial qa,qb,r,s; //qa qb操作 r存放头结点 s 中转站 r = head; qa = Pa->next; qb = Pb->next; while(qa&&qb) { polynomial s = (polynomial)malloc(sizeof(Node)); if(qa->index < qb->index) { s->coe = qa->coe; s->index = qa->index; qa = qa->next; } else if(qa->index > qb->index) { s->coe = qb->coe; s->index = qb->index; qb = qb->next; } else { s->coe = qa->coe + qb->coe; s->index = qa->index; qa = qa->next; qb = qb->next; } r->next = s; r = r->next; } while(qa) { polynomial s = (polynomial)malloc(sizeof(Node)); s->coe = qa->coe; s->index = qa->index; r->next = s; r = s; qa = qa->next; } while(qb) { polynomial s = (polynomial)malloc(sizeof(Node)); s->coe = qb->coe; s->index = qb->index; r->next = s; r = s; qb = qb->next; } r->next = NULL; return(head); } int main() { polynomial a,b; //创建两个多项式 Initpolynomial(a); Createpolynomial(a,1.0,1); Createpolynomial(a,2.0,2); Createpolynomial(a,2.0,3); Createpolynomial(a,3.0,4); Initpolynomial(b); Createpolynomial(b,3.0,1); Createpolynomial(b,4.0,2); Createpolynomial(b,5.0,5); printf("多项式a\n"); showpolynomial(a); printf("多项式b\n"); showpolynomial(b); polynomial c; c = Addpolymial(a,b); printf("相加后\n"); showpolynomial(c); getchar(); }怎么说呢 关于这个吧我觉得主要是多熟悉 关键部分是整合代码
相关文章推荐
- 数据结构: 二叉查找树(BST)
- 数据结构: AVL树
- 第6周SHH数据结构—【项目2-建立链栈算法库】
- 第6周SHH数据结构—【项目1-建立顺序栈】
- 【数据结构与算法】——排序综述
- 数据结构——排序
- 数据结构实验之栈八:栈的基本操作 SDUT
- C语言数据结构-链队列
- 面试——数据结构
- [转]算法与数据结构——入门总结与自学资料推荐
- 数据结构-线性表-队列
- 程序员书单_数据结构和算法篇
- 程序员书单_数据结构和算法篇
- 《软考之旅》——数据结构导论总结
- LeetCode Add and Search Word - Data structure design
- 数据结构_线性结构_栈与队列
- 数据结构_线性结构_栈与队列
- 第六周项目五 数据结构实践——后缀表达式(栈)
- 《数据结构、算法及应用》9.(C++实施订单)
- 数据结构和算法