题目

解决代码及点评


/************************************************************************/
/*
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. 在Xcode中使用C++与Objective-C混编

    有时候,出于性能或可移植性的考虑,需要在iOS项目中使用到C++. 假设我们用C++写了下面的People类: // //  People.h //  MixedWithCppDemo // //   ...

  2. android动画效果演示

    第一种:TranslateAnimation  动画效果演示: public void move(View view) { // 传统动画效果 TranslateAnimation animation ...

  3. Xcode 静态库调试策略

    Xcode 静态库调试策略  (已经有现成的工程和静态库源码)    ***** 为安全期间建议备份一下静态库 Step1: 下载最新的工程[工程中有所要测试的静态库和头文件需要删除]: Step2: ...

  4. Ural 1079 - Maximum

    Consider the sequence of numbers ai, i = 0, 1, 2, …, which satisfies the following requirements: a0  ...

  5. Delphi启动/停止Windows服务,启动类型修改为"自动"

    unit U_StartServices; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Contr ...

  6. 打工心态废掉了很多人,包括你吗?(你把现在这家公司的业务都弄清楚、弄懂了吗?君子报仇十年不晚!不离不弃!)good

    我只拿这点钱,凭什么去做那么多工作,我傻呀. 我为公司干活,公司付我一份报酬,等价交换而已,我不欠谁的. 我只要对得起这份薪水就行了,多一点我都不干,做了也白做. 工作嘛,又不是为自己干,说得过去就行 ...

  7. Pathchirp—有效的带宽估计方法(二)

    上一个blog介绍了有效带宽估计方法:pathload.http://blog.csdn.net/ice110956/article/details/11126491. 做一个小小的总结:pathlo ...

  8. Duanxx的C++得知:计算位数

    一旦计算出一个数值数字,基本上它是不断分裂使用10.重新计,看看有多少个数字. 今天发现能够考虑先将数字转换为字符串,然后通过string.length获得数值的位数,这样做方便的多. string ...

  9. sencha touch笔记(5)——DataView组件(1)

    1.DataView组件可以显示列表,图像等等的组件或者元素,特别适用于数据仓库频繁更新的情况.比如像显示新闻或者微博等等的很多相同样式的组件的列表这种一次性从后台或者数据源拿取很多数据展示的样式.比 ...

  10. [置顶] 正则表达式应用:匹配email地址

           email的组成主要有三部分         1用户名部分 2@   3域名部分        1用户名部分         用户名一般有数值字母下划线组成,所以正则表达式为:[\da- ...