基于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循环和一个简单的算法 因为每次累加的值有规律,后面一次累加是前面一次累加的两倍 所以可以用简单的循环,计算累加项和累加结果 /************ ...
随机推荐
- 【Java线程】锁机制:synchronized、Lock、Condition
http://www.infoq.com/cn/articles/java-memory-model-5 深入理解Java内存模型(五)——锁 http://www.ibm.com/develope ...
- Jquery 实现动态加入table tr 和删除tr 以及checkbox的全选 和 获取加入TR删除TR后的数据
关于jquery实现动态加入table tr的问题我也不多说了 上面代码非常多地方都有凝视的 关于返回的 编辑后的table 数据 我这里想说的是我直接把他保存成一个连接起来的字符串了 格式 str= ...
- 引入工程报包导入异常:import javax.servlet.annotation.WebFilter;
引入工程报包导入异常:import javax.servlet.annotation.WebFilter; (2013-02-21 16:38:00) 分类: java 今天上午导入了一个项目,用 ...
- [Swust OJ 856]--Huge Tree(并查集)
题目链接:http://acm.swust.edu.cn/problem/856/ Time limit(ms): 1000 Memory limit(kb): 10000 Description T ...
- Python实现 zip解压缩到指定目录
#!/bin/env python #-*- coding:utf-8 -*- import zipfile,os import platform,sys,os from zipfile import ...
- 深入理解-HashMap
一.HashMap概述 HashMap 在家族中位置:实现了Map接口,继承AbstractMap类.HashMap 允许key/value 都为null. 二.HashMap存储结构 HashMap ...
- POJ2395 最小生成树 - Prime算法
题目: Out of Hay Time Limit: 1000MS Memory Limit: 65536K Total Submissions: Accepted: Description The ...
- Tcl语言笔记之二
1,表达式 1.1 操作数 TCL表达式的操作数通常是整数或实数.整数一般是十进制的, 但如果整数的第一个字符是0(zero),那么TCL将把这个整数看作八进制的,如果前两个字符是0x则这个整数被看作 ...
- 运行计划之误区,为什么COST非常小,SQL却跑得非常慢?
转载请注明出处:http://blog.csdn.net/guoyjoe/article/details/38321477 2014.7.31就晚20:30 My Oracle Support组猫大师 ...
- Java 实现享元(Flyweight)模式
/** * 字母 * @author stone * */ public class Letter { private String name; public Letter(String name) ...