数据结构课程设计之一元多项式的计算

数据结构不是听会的,也不是看会的,是练会的,对于写这么长的代码还是心有余也力不足啊,对于指针的一些操作,也还是不熟练,总出现一些异常错误大哭,对于数据结构掌握还是不够啊,还是要多练,这个课程设计做的还是有点粗糙,还有待改进啊!!

对代码有进行了一下改进,增加了排序的模块;可能还存在着一下小bug,发现了再更新:减法还可以写的更简便一点。

<pre name="code" class="cpp">#include <stdio.h>
#include <stdlib.h>
#include <iostream>
#include <conio.h>/*屏幕操作函数库*/
using namespace std;
struct node //结构体储存系数和指数
{
    float coef; //系数
    int expn;  //指数
};
typedef node polynomial; // 创建一个多项式的节点
struct Lnode// 储存数据,指针域
{
    polynomial data;
    Lnode *next;
};
typedef Lnode Link; // 链表的数据类型
void CreatPolyn(Link *L,int n) //创建多项式
{
   Link *q; //创建一个新的节点
   for(int i=1;i<=n;i++)
   {
       q=(Link*)malloc(sizeof(Link));
       q->next=NULL;
       printf("输入第%d项的系数和指数:\n",i);
       scanf("%f%d",&q->data.coef,&q->data.expn);
       L->next=q;
       L=L->next; //把节点链到多项式中
   }
}

void DestoryPolyn(Link *L)// 销毁多项式
{
    Link *p;
    p=L->next;
    while(p!=NULL)
    {
        L->next=p->next;
        free(p);//释放节点的内存
        p=L->next;
    }
    free(p);
}

void PrintPolyn(Link *L) //打印多项式
{
    Link *p;
    if(L==NULL||L->next==NULL) //多项式为空的情况
        cout<<"该一元多项式为空!"<<endl;
    else
        {
            p=L->next;
            while(p!=NULL)
         {
               if((p->data).coef>0)//多项式的系数大于0的五种情况
                 {
                    if((p->data).expn==0)
                    cout<<(p->data).coef;
                    else if((p->data).coef==1&&(p->data).expn==1)
                        cout<<"x";
                    else if((p->data).coef==1&&(p->data).expn!=1)
                        cout<<"x^"<<(p->data).expn;
                    else if((p->data).expn==1&&(p->data).coef!=1)
                        cout<<(p->data).coef<<"x";
                    else
                        cout<<(p->data).coef<<"x^"<<(p->data).expn;
                    }
                    if((p->data).coef<0)//多项式的系数小于0的五种情况
                        {
                        if((p->data).expn==0)
                            cout<<(p->data).coef;
                            else if((p->data).coef==-1&&(p->data).expn==1)
                                cout<<"-x";
                            else if((p->data).coef==-1&&(p->data).expn!=1)
                                cout<<"-x^"<<p->data.expn;
                            else if((p->data).expn==1)
                                cout<<(p->data).coef<<"x";
                            else
                            cout<<(p->data).coef<<"x^"<<(p->data).expn;
                        }
                    if(p->next!=NULL&&(p->next->data).coef>0&&p->data.coef!=0)
                        cout<<"+";
                        p=p->next;
            }
        }
   cout<<endl;
}

void S
  • 11
    点赞
  • 58
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值