C/C++(链表应用)笔记——使用链表进行多项式的合并
来源:互联网 发布:js中hasclass 编辑:程序博客网 时间:2024/06/05 03:56
## 初学C/C++者的笔记——使用链表进行多项式的合并 ##
进行代码的调试与运行并且最后成功是很有成就感的事情
#include<iostream>#include<stdlib.h>using namespace std;typedef struct PolyNode{ //这是链表的自定义数据类型 int coef; //系数 int expon; //指数 struct PolyNode* link; //指向下一个指针}*Polynomial; //*Polynomial 就是指 Polynomial指针所指向的单元的值Polynomial p1,p2;Polynomial Attach(int coef,int expon, Polynomial *PtrRear){ /*由于本函数要改变的是当前结果表达式尾项的值 所以函数传递进来的是节点的指针地址 *PtrRear 指向尾项*/ Polynomial p; p=(Polynomial)malloc(sizeof(PolyNode));//创建一个新节点p 并进行赋值 初始化 p->coef= coef; p->expon= expon; //将 p 指向的新节点插入到尾项之后 (*PtrRear)->link=p; *PtrRear= p; return p;}int Compare(int a,int b){ if(a> b) return 1; if(a< b) return -1; return 0;}Polynomial PolyAdd( Polynomial p1,Polynomial p2){ Polynomial front, rear, temp; int sum; rear= (Polynomial)malloc(sizeof(PolyNode)); front = rear; while(p1&&p2) //这 switch(Compare(p1->expon,p2->expon)){ //个 case 1: //循 Attach(p1->coef,p1->expon,&rear); //环 p1= p1->link; //完 break; //成 case -1: //多 Attach(p2->coef,p2->expon,&rear); //项 p2= p2->link; //式 break; //的 case 0: //相 sum= p1->coef+ p2->coef; //加 if(sum) //比 Attach(sum,p1->expon,&rear); //较 p1= p1->link; //p1 p2= p2->link; //和 break; //p2 } //值 /* 将未处理完的那个多项式拷贝到新的多项式的后面*/ for(;p1;p1= p1->link) Attach(p1->coef,p1->expon,&rear);//p1不为空就拷p1 for(;p2;p2= p2->link) Attach(p2->coef,p2->expon,&rear);//p2不为空就拷p2 rear->link=NULL; temp=front; front= front->link; free(temp); return front;}//主函数int main(void){ PolyNode a1,b1,c1,d1,a2,b2,c2,d2,e;//创建链表,初始化,赋值,初始化多项式 Polynomial q1, q2,NewP; a1.coef=2;a1.expon=4; b1.coef=1;b1.expon=3; c1.coef=2;c1.expon=2; d1.coef=1;d1.expon=1; p1=&a1; a1.link=&b1; b1.link=&c1; c1.link=&d1; d1.link=NULL; q1=p1; cout<<"原多项式p1为:"; do{ cout<<q1->coef<<"x^"<<q1->expon; if(q1->link) cout<<"+"; else cout<<" "<<endl; q1=q1->link; }while(q1!=NULL); a2.coef=3;a2.expon=5; b2.coef=4;b2.expon=3; c2.coef=1;c2.expon=2; d2.coef=2;d2.expon=1; e.coef=-1;e.expon=0; p2=&a2; a2.link=&b2; b2.link=&c2; c2.link=&d2; d2.link=&e; e.link=NULL; q2=p2; cout<<"原多项式p2为:"; do{ cout<<q2->coef<<"x^"<<q2->expon; if(q2->link) cout<<"+"; else cout<<endl<<endl; q2=q2->link; }while(q2!=NULL); NewP= PolyAdd( p1, p2); cout<<"新的多项式为:"<<endl; do{ cout<<NewP->coef<<"x^"<<NewP->expon; if(NewP->link) cout<<"+"; else cout<<endl<<endl; NewP=NewP->link; }while(NewP!=NULL); return 0;}
通过这次调试,加深了自己对于链表的理解和运用:
—–>出现了指针的运用上的问题;
—–>出现了链表的初始化赋值的问题;
—–>出现了函数的调用与使用的问题;
—–>等等··· ···
—–>—–>问题一一解决,收获颇丰
第一次发博客,记录自己的学习历程,良好的开端!继续努力吧!
0 0
- C/C++(链表应用)笔记——使用链表进行多项式的合并
- 学习笔记------数据结构(C语言版)链表应用~一元多项式求和
- 双向链表-C/C++-多项式操作
- C语言用带头节点的链表创建多项式并进行相关操作
- 链表应用——二元多项式
- C语言进阶-第19讲:链表应用(链表的合并)
- 关于c 一元多项式链表的建立和打印
- 通过链表实现的多项式乘法【C++】
- 单链表的应用——多项式加法的C语言实现(链式存储结构)
- 多项式加法利用链表实现(c语言)
- C语言数据结构 链表的合并
- 双链表&链表合并&多项式相加算法
- 多项式运算线性链表的应用
- 链表的应用---多项式运算
- 多项式的累加------(数据结构)链表的应用
- 数据结构(c语言版)链表的实现以及合并
- 有序链表的合并(in C++)
- 线性表的应用——求解两个多项式相加问题描述(链表求解)
- 南邮 OJ 2061 走迷宫
- 8 个最优秀的 Android Studio 插件
- CC2530 蜂鸣器 播放音乐
- thrift框架简介
- fedora20下面 dnw for linux 安装配置
- C/C++(链表应用)笔记——使用链表进行多项式的合并
- JAVA Zero Copy
- 搜索题解
- 11. DAO使用进阶
- Duilib中各个类的简单介绍
- iOS UI08_TableView界面传值
- [Android Studio]AS的常用配置
- C#读取和导出到Excel简单实例
- fzu 1182 Argus 优先队列