|
一元稀疏多项式计算器:一次数据结构实验的题目(1)
据说今天要交这个变态的作业,所以,我赶了一夜写了这么个小程序,可是今天拿到了学校老师却说今天不上课,害的我困的差点撞车。 唉,多少也是写完了一点东西,传上来大家看看吧。 输入一个一元多项式,例如:-23x^9+54x^8+22x^9等等,把指数相同的项目合并,并且按照指数大小排列输出字符串。差不多了吧。
老师要求使用线性表来操作,我也就按要求做了。源代码含有四个文件,datastrUCt.h是数据结构的定义;ListOper.h是线性表操作函数的声明;ListOper.cpp是线性表操作函数的定义;main.cpp是主单元含有主函数和字符串分析函数。 datastruct.h
typedef struct list { int c; //多项式的项数 int e; //多项式的指数 struct list *next; //下一结点 }; typedef struct list *LinkList; typedef struct list Node;
下面是线性表的操作相关函数声明,对应文件ListOper.h: //File: ListOper.h #ifndef DATASTRUCT #define DATASTRUCT #include "datastruct.h" #endif
//some functions declaretioin bool CreateList(LinkList &L); Node *CreateNode(int e, int c); void FreeList(LinkList &L); void SortList(LinkList &L); void DeleteNextNode(Node *d); void SweepNextNode(Node *s); void OutPutList(LinkList &L);
相关函数的实现,对应文件ListOper.cpp: //File: ListOper.cpp #include <stdlib.h> #include <iostream> #ifndef DATASTRUCT #define DATASTRUCT #include "datastruct.h" #endif #include "ListOper.h" using namespace std; bool CreateList(LinkList &L) { //TODO: 创建线性链表 Node *head; head=(Node *)malloc(sizeof(Node)); if(head==NULL) { cout << "内存分配错误" << endl; return false; } head->next=NULL; head->c=0; head->e=0; L=head; return true; } Node *CreateNode(int e, int c) { //TODO: 创建结点
|