链式存储
来源:互联网 发布:chrome ubuntu 16.04 编辑:程序博客网 时间:2024/05/14 07:28
点击(此处)折叠或打开
- /*
- *题二:设计并实现以下算法:给出用单链表存储多项式的结构,
- *利用后接法生成多项式的单链表结构,实现两个多项式相加的运算,
- *并就地逆置加相后的多项式链式。
- */
- #include <stdio.h>
- #include <malloc.h>
- #include <conio.h>
- #define EQUAL 1
- #define ok 1
- #define error 0
- #define overflow -1
- #define LIST_INIT_STZE 100
- #define LISTINCREMENT 10
- typedef struct STU {
- int e;
- int c;
- }ElemType;
- typedef struct LNODE {
- ElemType data;
- struct LNODE *next;
- }LNode, *LinkList;
- int Init(LinkList *L)
- {
- *L=(LNode *)malloc(sizeof(LNode));
- if(!L)
- exit(error);
- (*L)->next=NULL;
- return ok;
- }
- int PrintList (LinkList L)
- {
- LinkList p;
- p=L->next;
- while(p)
- {
- printf ("%d*X^%d",p->data.c,p->data.e);
- if (p->next!=NULL)
- printf ("+");
- p=p->next;
- }
- printf ("\n");
- }
- int CreateMult (LinkList L)
- {
- int n;
- int i;
- ElemType e;
- scanf ("%d", &n);
- for (i=1;i<=n;i++)
- {
- printf ("e of %d elem:", i);
- scanf ("%d", &e.e);
- printf ("c of %d elem:", i);
- scanf ("%d", &e.c);
- Insert (L, e);
- }
- }
- int Convert (LinkList *L)
- {
- LinkList p,q,r;
- p=*L;
- q=p->next;
- r=q->next;
- while (q)
- {
- q->next=p;
- if (q->next==(*L))
- q->next=NULL;
- p=q;
- q=r;
- r=q->next;
- }
- (*L)->next=p;
- return 0;
- }
- int Insert (LinkList L, ElemType e)
- {
- LinkList p,s;
- p=L;
- while (p->next!=NULL)
- p=p->next;
- s=(LinkList)malloc(sizeof(LNode));
- s->data=e;
- s->next=NULL;
- p->next=s;
- }
- int CompareE (ElemType e1, ElemType e2)
- {
- if (e1.e==e2.e)
- return 1;
- else
- return 0;
- }
- int Less_Compare (ElemType e1, ElemType e2)
- {
-
- if (e1.e<e2.e)
- return 1;
- else
- return 0;
- }
- int Compute (LinkList la, LinkList lb, LinkList lc)
- {
- ElemType e;
- LinkList pa;
- LinkList pb;
- pa=la->next;
- pb=lb->next;
- while(pa&&pb)
- {
- if (CompareE (pa->data,pb->data))
- {
- e.c=(pa->data.c)+(pb->data.c);
- e.e=pa->data.e;
- Insert (lc, e);
- pa=pa->next;
- pb=pb->next;
- }
- else if(Less_Compare(pa->data,pb->data))
- {
- Insert (lc, pb->data);
- pb=pb->next;
- }
- else
- {
- Insert (lc, pa->data);
- pa=pa->next;
- }
- }
- while (pa)
- {
- Insert(lc, pa->data);
- pa=pa->next;
- }
- while (pb)
- {
- Insert(lc, pb->data);
- pb=pb->next;
- }
- }
- int main ()
- {
- LinkList la, lb, lc;
- clrscr();
- Init (&la);
- printf ("Create la:");
- CreateMult (la);
- clrscr();
- Init (&lb);
- printf ("Create lb:");
- CreateMult (lb);
- clrscr();
- printf ("Show la:");
- PrintList (la);
- printf ("Show lb:");
- PrintList (lb);
- Init (&lc);
- Compute (la, lb, lc);
- printf ("Show lc:");
- PrintList (lc);
- Convert (&lc);
- PrintList (lc);
- getch();
- }
0
上一篇:链式存储
下一篇:栈的应用
相关热门文章
- 建筑工程管理软件信息管理的目...
- 块设备驱动程序设计
- !优惠HP8561E HP8563E频谱分析...
- !中秋热卖AgilentE4421B信号源...
- ipcam的几个概念
- test123
- 编写安全代码——小心有符号数...
- 使用openssl api进行加密解密...
- 一段自己打印自己的c程序...
- sql relay的c++接口
- 怎么样找出BIND中查询并发量多...
- 可有人在实际的openstack生产...
- 如下makefile如何编写
- sqlldr 参数配置
- 讨论一下各位所管理的mysql生...
给主人留下些什么吧!~~
原创粉丝点击
热门IT博客
热门问题
老师的惩罚
人脸识别
我在镇武司摸鱼那些年
重生之率土为王
我在大康的咸鱼生活
盘龙之生命进化
天生仙种
凡人之先天五行
春回大明朝
姑娘不必设防,我是瞎子
吨吨吨表情包
水泥1吨多少包
吨包生产厂家
吨包图片
1吨水泥多少包
吨包托盘
吨包打包机
吨包开袋站
编织袋吨包
吨包下料
9100rom包
吨袋拆包站
龚德包
吨叔
吨箱
吨
吨吨
什么是吨袋
吨桶
1吨桶
一吨原油等于多少桶
1吨化工桶
一吨多少桶
10吨塑料桶生产厂家
二手吨桶
30吨塑料桶
10吨塑料桶厂家
吨桶回收
吨桶塑料桶
1.5吨塑料桶
1吨塑料桶
1吨塑料桶生产厂家
桶
吨桶尺寸
100l塑料桶
125l塑料桶
1桶原油等于多少吨
1吨原油等于多少桶
吨 桶
桶桶
吨桶接头