基于visual Studio2013解决C语言竞赛题之1091多项式
题目
解决代码及点评
/************************************************************************/
/*
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多项式的更多相关文章
- 基于visual Studio2013解决C语言竞赛题之0401阶乘
题目 解决代码及点评 这个是一道经典的教科书题目,基本上每本基础的c/c++语言教科书都会有这个题目 用来演示循环语句 #include <stdio.h> #include ...
- 基于visual Studio2013解决C语言竞赛题之0205位数求和
题目
- 基于visual Studio2013解决C语言竞赛题之0201温度转换
题目 解决代码及点评 #include <stdio.h> #include <stdlib.h> void main() { float f; float c; float ...
- 基于visual Studio2013解决C语言竞赛题之0409 100以内素数
题目 解决代码及点评 在已经知道素数是怎么判断的基础上,增加循环,可以判断出100以内的素数 /******************************************* ...
- 基于visual Studio2013解决C语言竞赛题之0408素数
题目 解决代码及点评 判断一个数是不是素数的方法,一般是看n是不是能被n以内的某个整数(1除外)整除 为了提高效率,这个整数范围一般缩小到n的平方根 如果在这个范围内的整数都不能整除,那么 ...
- 基于visual Studio2013解决C语言竞赛题之0407最大值最小值
题目 解决代码及点评 这道题考察循环和比较 /*********************************************************************** ...
- 基于visual Studio2013解决C语言竞赛题之0406数列求和
题目 解决代码及点评 这个题目,还是考察for循环的使用 以及数列规律,该数列的特点是第n个分子 = 第n-1个分子 + 第n-2个分子,分母也是此规律 而另外一个规律是第n个分子和第n- ...
- 基于visual Studio2013解决C语言竞赛题之0405阶乘求和
题目 解决代码及点评 这道题和上一道题类似,第n个累加项 = n-1累加项的n倍 由于有这个规律,我们可以用一个for循环实现 但是例子代码并没有这么做,大家可以回去修改下代码,使得代码更 ...
- 基于visual Studio2013解决C语言竞赛题之0404循环求和
题目 解决代码及点评 这道题考验for循环和一个简单的算法 因为每次累加的值有规律,后面一次累加是前面一次累加的两倍 所以可以用简单的循环,计算累加项和累加结果 /************ ...
随机推荐
- tomcat环境变量的配置(网上摘,全部验证通过)
tomcat环境变量的配置 1.===> 进入bin目录下,双击startup.bat看是否报错.一般肯定会报. 2.===> 右键我的电脑===>高级===>环境变量 ...
- python读写zip文件
zipfile.ZipFile(fileName[, mode[, compression[, allowZip64]]]) fileName是没有什么疑问的了. mode和一般的文件操作一样,'r' ...
- ASP.NET MVC 5 学习教程:添加视图
原文 ASP.NET MVC 5 学习教程:添加视图 起飞网 ASP.NET MVC 5 学习教程目录: 添加控制器 添加视图 修改视图和布局页 控制器传递数据给视图 添加模型 创建连接字符串 通过控 ...
- MVC中Controller里写alert的问题
controller: Viewbag.a=true; 页面中 @if(Viewbag.a!=null) { <script> alert('XXX'); </script> ...
- cglib源码学习交流
背景 前段时间在工作中,包括一些代码阅读过程中,spring aop经常性的会看到cglib中的相关内容,包括BeanCopier,BulkBean,Enancher等内容,以前虽大致知道一些内容,原 ...
- iOS插件化研究之中的一个——JavaScriptCore
原文:p=191">http://chentoo.com/?p=191 一.前言 一样的开篇问题,为什么要研究这个?iOS为什么要插件化?为什么要借助其它语言比方html5 js甚至脚 ...
- 对xml进行解析
1.要解析的xml文件 <?xml version="1.0" encoding="utf-8"?> <infos> <city ...
- Sort List 分类: leetcode 算法 2015-07-10 15:35 1人阅读 评论(0) 收藏
对链表进行排序,要求时间复杂度为O(n log n) ,不使用额外的空间. 我一开始的想法是借助quicksort的思想,代码如下: # time O(nlog(n)) # Definition fo ...
- 编译安装MongoDB C++ Driver (win8.1 vs2013)
在C++中调用mongodb的库函数需要安装mongodb的c++driver,需要自己编译,(自己搞了一天半 =_=''' ) 官网Build MongoDB From Source 说To bui ...
- HDOJ 2680 Dijkstra
题目大意: 给你一个有向图,一个起点集合,一个终点,求最短路.... 解题思路: 1.自己多加一个超级源点,把起点集合连接到超级源点上,然后将起点与超级源点的集合的路径长度设为0,这样就称为一个n+1 ...