题目

解决代码及点评


/************************************************************************/
/*
91. 建立两个链表,来表示x幂的两个多项式,链表中的结点有三个字段coef、exp和next,
分别表示多项式每项的系数、x的指数及指向下一项的指针。
编一程序,按x的降幂输入多项式的系数和指数,建立两个链表,
然后编一函数来完成把两个多项式的链表叠加到第三个链表中。例如:
第一个多项式为: -4x8 +5x6 +3x4 -4x的链表为: -4 8 5 6 3 4 -4 1 第二个多项式为: 5x9 -5x8 -3x4 +7x的链表为: 5 9 -9 8 5 6 3 1 结果的多项式为: 5x9 -9x8 +5x6 +3x 5 9 -9 8 5 6 3 1 */
/************************************************************************/
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include <string.h> typedef struct student STU;
struct student
{
int coef;
int exp;
struct student * next;
};
STU * Init91()
{
STU * p=(STU *)malloc(sizeof(STU));
if (p==NULL)
{
return NULL;
}
else
p->next=NULL;
return p;
}
STU * Insert91(STU * head,int coef,int exp)
{ STU * last=head;
if (last==NULL)
{
return NULL;
}
while(last->next!=NULL)
last=last->next;
STU *p=(STU *)malloc(sizeof(STU));
if (p==NULL)
{
return NULL;
}
else
{
p->coef=coef;
p->exp=exp;
last->next=p;
p->next=NULL;
return p; }
}
void DeleteNode91(STU* pre,STU *cur)
{
pre->next=cur->next;
free(cur);
}
void printfNodes91(STU *head)
{
STU *p=head->next; while(p!=NULL)
{
printf("%2d%2d",p->coef,p->exp);
printf("->");
p=p->next;
}
printf("\n"); }
STU * GB91(STU * A,STU * B)
{
STU *C=Init91();
STU *p1=A->next;
STU * tempA=A;
STU *tempB=B;
STU*p2=B->next;
STU *temp=NULL;
while(p2!=NULL&&p1!=NULL)
{
if (p1->exp>p2->exp)
{
temp=Insert91(C,p1->coef,p1->exp);
DeleteNode91(tempA,p1);
p1=tempA->next;
}
else if (p1->exp<p2->exp)
{
temp=Insert91(C,p2->coef,p2->exp);
DeleteNode91(tempB,p2);
p2=tempB->next;
}
else
{
if (p1->coef+p2->coef!=0)
{
temp=Insert91(C,p2->coef+p1->coef,p2->exp);
DeleteNode91(tempB,p2);
p2=tempB->next;
DeleteNode91(tempA,p1);
p1=tempA->next;
}
else
{
p1=p1->next;
tempA=tempA->next;
p2=p2->next;
tempB=tempB->next;
} }
}
if (p2==NULL)
{
temp->next=p1;
}
else
{
temp->next=p2;
}
return C; }
void main()
{
STU * A=Init91();
Insert91(A,-4,8);
Insert91(A,5,6);
Insert91(A,3,4);
Insert91(A,-4,1);
printfNodes91(A);
STU * B=Init91();
Insert91(B,5,9);
Insert91(B,-5,8);
Insert91(B,-3,4);
Insert91(B,7,1);
printfNodes91(B);
printfNodes91(GB91(A,B)); system("pause");
}

代码编译以及运行

由于资源上传太多,资源频道经常被锁定无法上传资源,同学们可以打开VS2013自己创建工程,步骤如下:

1)新建工程

2)选择工程

3)创建完工程如下图:

4)增加文件,右键点击项目

5)在弹出菜单里做以下选择

6)添加文件

7)拷贝代码与运行

程序运行结果

代码下载

http://download.csdn.net/detail/yincheng01/6681845

解压密码:c.itcast.cn






基于visual Studio2013解决C语言竞赛题之1091多项式的更多相关文章

  1. 基于visual Studio2013解决C语言竞赛题之0401阶乘

      题目 解决代码及点评 这个是一道经典的教科书题目,基本上每本基础的c/c++语言教科书都会有这个题目 用来演示循环语句 #include <stdio.h> #include ...

  2. 基于visual Studio2013解决C语言竞赛题之0205位数求和

     题目

  3. 基于visual Studio2013解决C语言竞赛题之0201温度转换

    题目 解决代码及点评 #include <stdio.h> #include <stdlib.h> void main() { float f; float c; float ...

  4. 基于visual Studio2013解决C语言竞赛题之0409 100以内素数

       题目 解决代码及点评 在已经知道素数是怎么判断的基础上,增加循环,可以判断出100以内的素数 /******************************************* ...

  5. 基于visual Studio2013解决C语言竞赛题之0408素数

      题目 解决代码及点评 判断一个数是不是素数的方法,一般是看n是不是能被n以内的某个整数(1除外)整除 为了提高效率,这个整数范围一般缩小到n的平方根 如果在这个范围内的整数都不能整除,那么 ...

  6. 基于visual Studio2013解决C语言竞赛题之0407最大值最小值

      题目 解决代码及点评 这道题考察循环和比较 /*********************************************************************** ...

  7. 基于visual Studio2013解决C语言竞赛题之0406数列求和

      题目 解决代码及点评 这个题目,还是考察for循环的使用 以及数列规律,该数列的特点是第n个分子 = 第n-1个分子 + 第n-2个分子,分母也是此规律 而另外一个规律是第n个分子和第n- ...

  8. 基于visual Studio2013解决C语言竞赛题之0405阶乘求和

      题目 解决代码及点评 这道题和上一道题类似,第n个累加项 = n-1累加项的n倍 由于有这个规律,我们可以用一个for循环实现 但是例子代码并没有这么做,大家可以回去修改下代码,使得代码更 ...

  9. 基于visual Studio2013解决C语言竞赛题之0404循环求和

      题目 解决代码及点评 这道题考验for循环和一个简单的算法 因为每次累加的值有规律,后面一次累加是前面一次累加的两倍 所以可以用简单的循环,计算累加项和累加结果 /************ ...

随机推荐

  1. 饭卡------HDOJ杭电2546(还是01背包!!!!!!)

    Problem Description 电子科大本部食堂的饭卡有一种非常诡异的设计,即在购买之前推断剩余金额. 假设购买一个商品之前,卡上的剩余金额大于或等于5元,就一定能够购买成功(即使购买后卡上剩 ...

  2. Gstreamer中加入�x265编解码器

    官方的当前gstreamer版本号还不支持x265编解码,因此要加入�x265,须要自己编译.本文基于gstreamer1.3.3版进行编译安装.须要首先自己编译gstreamer1.3.3,以及对应 ...

  3. hdu4597 Play Game(DFS)

    转载请注明出处:http://blog.csdn.net/u012860063 题目链接:http://acm.hdu.edu.cn/showproblem.php? pid=4597 题意 Alic ...

  4. 中国A股市场缘何遭遇9连跌?

    端午长假刚过,当投资者对“红六月”预期信心满满的时候,A股市场却遭遇了诡异的跌势,截止6月17日收盘,A股出现了罕见的“9连跌”.不仅上证综指失守2200点年线整数位,深证成指跌幅则高达3%以上,而且 ...

  5. Git简介及安装和简单配置

    首先需要清楚的是Git和GitHub的区别. Git是一个开源的分布式版本控制系统,用于敏捷高效地处理任何或小或大的项目.Git 与常用的版本控制工具 CVS, Subversion 等不同,它采用了 ...

  6. .net 弹窗方式

    Page.ClientScript.RegisterStartupScript(this.GetType(), "", "<script>alert('请输入 ...

  7. docker学习笔记7:发布镜像到docker hub上

    镜像创建好后,很重要的一个操作就是共享和发布.可以将自己创建的镜像发布到docker hub上,也可以发布到自己的私有docker hub上. 要想发布镜像到dokcer hub上,首先要在dokce ...

  8. 转:CSS圆角详解

    CSS3是样式表(style sheet)语言的最新版本,它的一大优点就是支持圆角. 网页设计大师Nicholas Zakas的最新文章,清晰易懂地解释了CSS3圆角的各个方面,非常值得学习.以下就是 ...

  9. 基于visual Studio2013解决算法导论之025双向循环链表

     题目 双向循环链表 解决代码及点评 #include <stdio.h> #include <stdlib.h> #include <time.h> #in ...

  10. 凡客副总裁被曝离职:或因IPO受阻|凡客|王春焕|离职_互联网_新浪科技_新浪网

    凡客副总裁被曝离职:或因IPO受阻|凡客|王春焕|离职_互联网_新浪科技_新浪网 凡客副总裁被曝离职:或因IPO受阻 2013年05月07日 00:56   每日经济新闻    我有话说     每经 ...