该楼层疑似违规已被系统折叠 隐藏此楼查看此楼

/*数据结构多项式加法用C语言的完美实现,书43页 算法 2.23[ 数据结构(C语言版) 严尉敏主编]*/

/*注释就不加了,本程序的所有函数书上都有说明*/

/*本程序Tourboc 2.0编译通过*/

#include

#include

#include

#include

#define  TURE 1

#define  FALSE 0

#define  OK  1

typedef  int  status;

typedef  struct {

float  coef;

int    expn;

}term,ElemType;

typedef  struct LNode {

ElemType data;

struct LNode *next;

}*link,*Position,NodeType;

typedef  struct {

link  head,tail;

int  len;

}linklist;

typedef  linklist  polynomial;

Position  Nextpos(linklist *l,link p)

{ if(l->head&&p->next)  return(p->next);

else    return  NULL;

}

int cmp(term a,term b)

{ if(a.expn>b.expn)  return 1;

else if(a.expn==b.expn)  return 0;

else  return -1;

}

status Makenode(link *p,ElemType e)

{ *p=(link)malloc(sizeof(NodeType));

if(!*p) {printf("Error,the memory is overflow!\n");exit(FALSE);}

(*p)->data=e;

(*p)->next=NULL;

return  OK;

}

status Initlist(polynomial *p)

{ p->head=(link)malloc(sizeof(NodeType));

if(!p->head)  { printf("Cannot find space!");exit(FALSE);}

p->len=0;

p->tail=p->head;

return  OK;

}

status Insfirst(polynomial *l,link *q,link s)

{ if(l->head&&*q&&s)

{ s->next=(*q)->next;(*q)->next=s;

if(l->tail==*q) l->tail=s;

l->len++;

}

}

status LocateElem(linklist *l,ElemType e,Position *q,int (*cmp)(ElemType,ElemType))

{ link p1;

int t;

if(l->head)

{p1=l->head;*q=p1->next;t=(*cmp)((*q)->data,e);

while(*q&&t) { p1=*q;*q=(*q)->next;}

if(*q&&t)   return  OK;

else

{*q=p1; return  FALSE;}

}

else  return FALSE;

}

status Delfirst(polynomial *l,link *h,link *q)

{ if((*h)->next)

{ *q=(*h)->next;(*h)->next=(*q)->next;

if(l->tail==*q) l->tail=l->head;

l->len--;

}

}

status Append(linklist *l,link s)

{ if(l->head&&s)

{if(l->tail!=l->head)  l->tail->next=s;

else l->head->next=s;

l->tail=s;

l->len++;

}

}

void Creatpolyn(polynomial **p,int m)

{ ElemType e;

link h,q,s;

int i;

Initlist(*p);

h=(*p)->head;

e.coef=0.0;e.expn=-1;h->data=e;h->next=NULL;

printf("Input Coef and Expn:\n");

for(i=1;i<=m;i++)

{scanf("%f%d",&e.coef,&e.expn);

if(!LocateElem(*p,e,&q,cmp))

if(Makenode(&s,e))   Insfirst(*p,&q,s);

}

}

void Addpolyn(polynomial **pa,polynomial **pb)

{ link ha,hb,qa,qb;

ElemType a,b;

int sum;

ha=(*pa)->head;hb=(*pb)->head;

qa=Nextpos(*pa,ha);qb=Nextpos(*pb,hb);

while(qa&&qb)

{ a=qa->data;b=qb->data;

switch(cmp(a,b))

{case  -1:

ha=qa;qa=Nextpos(*pa,qa);break;

case  0:

sum=a.coef+b.coef;

if(sum!=0.0)

{qa->data.coef=sum;

ha=qa;

}

else

{Delfirst(*pa,&ha,&qa);free(qa);

}

Delfirst(*pa,&hb,&qb);free(qb);qb=Nextpos(*pb,hb);

qa=Nextpos(*pa,ha);break;

case  1:

Delfirst(*pa,&hb,&qb);Insfirst(*pa,&ha,qb);

qb=Nextpos(*pb,hb);ha=Nextpos(*pa,ha);break;

}

}

if((*pb)->head!=(*pb)->tail) Append(*pa,qb);

free(hb);

}

void print(polynomial *l)

{ link p;

p=l->head;

p=p->next;

printf("\n");

while(p)

{ printf("%f X^%d",p->data.coef,p->data.expn);

p=p->next;

if(p) printf("+");

}

printf("\n");

}

main()

{polynomial *p1,*p2;

link a1,a2;

int n1,n2;

printf("\nInput the length of polynomial L1(n1):\n");

scanf("%d",&n1);

Creatpolyn(&p1,n1);

printf("\nThe Polynomial L1:\n");

print(p1);

printf("\nInput the length of polynomial L2(n2):\n");

scanf("%d",&n2);

Creatpolyn(&p2,n2);

printf("\nThe Polynomial L2:\n");

print(p2);

Addpolyn(&p1,&p2);

printf("\nPolynomial L1 + Polynomial L2:\n");

print(p1);

}

——Djl23 于05年10月9日

后面的算法源代码将陆续公布�

c语言降序多项式加法,数据结构算法(多项式加法)的C语言完美实现相关推荐

  1. java冒泡排序算法代码降序_java实现冒泡排序算法

    介绍 冒泡排序是一种算法,比较相邻元素,如果他们处在错误的位置上,那么交换他们的位置.排序可以进行升序或者降序. 原理 从第一个元素开始,比较第一个元素和第二个元素,如果第一个元素大于第二个元素,那么 ...

  2. 数据结构 算法与应用C 语言描述第六章,数据结构算法与应用-C语言描述002.pdf

    下载 下载 第2 章 程 序 性 能 以下是本章中所介绍的有关程序性能分析与测量的概念: • 确定一个程序对内存及时间的需求. • 使用操作数和执行步数来测量一个程序的时间需求. • 采用渐进符号描述 ...

  3. 数据结构源码笔记(C语言):二叉排序树的基本操作算法

    //二叉排序树的基本运算算法#include<stdio.h> #include<malloc.h>#define MaxSize 100typedef int KeyType ...

  4. 数据结构源码笔记(C语言):置换-选择算法

    //实现置换-选择算法#include<stdio.h> #include<malloc.h> #include<string.h> #include<std ...

  5. 数据结构源码笔记(C语言):哈希表的相关运算算法

    //实现哈希表的相关运算算法 #include<stdio.h> #include<malloc.h> #include<string.h>#define MaxS ...

  6. 数据结构源码笔记(C语言):二叉平衡树的相关操作算法

    //二叉平衡树的相关运算 #include<stdio.h> #include<malloc.h> #include<string.h>typedef char I ...

  7. 数据结构源码笔记(C语言):B树的相关运算算法

    //B树的相关运算算法#include<stdio.h> #include<malloc.h>#define MAXM 10//定义B树最大的阶数 typedef int Ke ...

  8. 字符串括号匹配c语言,数据结构C语言括号的检验源程序 , 数据结构(C) 请用类C语言实现括号匹配的检验这个算法...

    问题标题 数据结构C语言括号的检验源程序 , 数据结构(C) 请用类C语言实现括号匹配的检验这个算法 2019-8-21来自ip:13.149.196.77的网友咨询 浏览量:270 手机版 问题补充 ...

  9. c语言算法设计 pdf下载,数据结构算法设计与实现指导(C语言版).pdf

    3 章 栈--实验三 3.1 实验目的及要求 1.理解特 的线性结构--顺序栈的抽象数据类型的定义,及其在 C 语言环境中的 表示方法. 2 .理解顺序栈的基本操作的算法,及其在C 语言环境中一些主要 ...

最新文章

  1. php集成paypal付款流程,在PHP中集成PayPal标准支付
  2. 指针运算(自己做个笔记)
  3. 索尼搞了个大新闻!AI打败人类三冠王,登上Nature封面,这波让任天堂无话可说...
  4. python与excel结合-Python与Excel 不得不说的事情
  5. golang中string下标访问
  6. redis lettuce_Redis Client Lettuce 5 GA发布
  7. Apollo进阶课程 ① | 带你纵览无人车
  8. c语言中字符 12是多少,c语言中字符串的讲解(DOC可编).doc
  9. opencv 颜色空间转换、颜色追踪
  10. python html解析_Python HTML解析器
  11. 【网络攻防】常见的网络攻防技术——黑客攻防(通俗易懂版)
  12. 【Python56--爬取妹子图】
  13. Android STB 遥控器适配
  14. 《计算智能导论》下载
  15. ios 推送通知服务证书不受信任(Apple Push Service certificate is not trusted)
  16. python 实体识别_英文实体识别的python实现
  17. 校外使用校园网访问外网
  18. 第十七章 再论没有银弹
  19. 仍是在思过崖攀爬的人
  20. 《稀缺》塞德希尔·穆来纳森 / 埃尔德·沙菲尔

热门文章

  1. 时间组件选择一个时间段_衡南(光伏支架组件安装)施工队
  2. anaconda 怎么安装xlrd_Pyinstaller打包,文件太大了怎么办?
  3. 英语计算机房和操场怎么读,计算机房对我们学习帮助很大. the , in studies , computer , room , helps , lot , a , our , us...
  4. 怎么查询mysql的语法_mysql查询语法
  5. ios请求头解决参数中文乱码_花了一天时间就解决了一个的请求头传参参数格式bug...
  6. text 两端对齐 小程序_小程序实现文字两端对齐
  7. 有道翻译接口问题(续)
  8. OpenCV的工具函数
  9. cocos2dx实现经典飞机大战
  10. [记录] ---阿里云java.io.IOException: Connection reset by peer的问题