|
![]() | 作者: changfeng [changfeng]
![]() |
登录 |
#include<stdio.h> #include<malloc.h> #include<iostream.h> typedef struct node{ int exp; int coef; struct node *next; }Node; typedef struct link{ Node *head; int len; }Link; Link *Create() { int aa=0,bb=0; Link *a=0; Node *head=0,*p=0,*u=0; p=(Node*)malloc(sizeof(Node)); a=(Link*)malloc(sizeof(Link)); a->head=NULL; a->head=p; printf("输入一列多项式:"); scanf("%d%d",p->exp,p->coef); while(1) { scanf("%d%d",&aa,&bb); if(aa!=-1&&bb!=-1&&bb!=0){ u=(Node*)malloc(sizeof(Node)); u->exp=aa; u->coef=bb; p->next=u; p=u; } else break; } p->next=NULL; return a; } void print(Link *h) { node *p; p=h->head; while(p!=NULL) { printf("%d\t",p->exp); printg("%d\n",p->coef); p=p->next; } } Link *Unite(Link *a,Link *b){ Node *p=0,*q=0,*pre=0,*u=0; p=(Node*)malloc(sizeof(Node)); q=(Node*)malloc(sizeof(Node)); pre=(Node*)malloc(sizeof(Node)); u=(Node*)malloc(sizeof(Node)); p=a->head->next; q=b->head->next; pre=a->head; while(p->next!=NULL&&q->next!=NULL) { if(p->exp<q->exp){ pre=p; p=p->next;} else if(p->exp==q->exp) { int x=(p->coef)+(q->coef); if(x!=0) { p->coef=x; pre=p; } else{ pre->next=p->next; free(p); } p=pre->next; u=q; q=q->next; free(u); } else if(p->exp>q->exp){ u=q->next; q->next=p; pre->next=q; pre=q; q=u; } } if(q!=NULL) pre->next=q; free(b); return a; } void main(){ //Link *a=0; Link *a,*b; Node *c; a=(Link*)malloc(sizeof(Link)); b=(Link*)malloc(sizeof(Link)); c=(Node*)malloc(sizeof(Node)); a=Create(); print(a); b=Create(); print(b); a=Unite(a,b); c=a->head->next; while(a!=NULL){ printf("%d\t%d\n",c->exp,c->coef); c=c->next; } } 调式不出来呀。 [此贴被 迈克老狼(changfeng) 在 02月25日22时51分 编辑过] |
地主 发表时间: 04-02-25 22:16 |
![]() | 回复: lwei889 [lwei889] ![]() |
登录 |
你的原意是什么啊 是不是求 ‘5+6+7=?’这样的多项式的和??? 可你在Creat()函数中提示输入一个多项式,后面却跟了scanf("%d%d",p->exp,p->coef);一条语句,这样肯定不行的。 链表在处理多项式的输入时有问题,当然在运行是就有问题拉! |
B1层 发表时间: 04-02-26 12:29 |
![]() | 回复: changfeng [changfeng] ![]() |
登录 |
我的原意是EXP是X的指数,COEF是X的系数,不过现在我已经搞定的 现将他贴在下面。-1 -1 //LINE。H #include<stdio.h> #include<malloc.h> typedef struct node{ int exp; int coef; struct node *next; }Node; typedef struct link{ Node *head; int len; }Link; Link *Create() { int aa=0,bb=0; Link *a=0; Node *head=0,*p=0,*u=0; p=(Node*)malloc(sizeof(Node)); a=(Link*)malloc(sizeof(Link)); a->head=NULL; a->head=p; printf("输入一列多项式:"); scanf("%d%d",&(p->exp),&(p->coef)); while(1) { scanf("%d%d",&aa,&bb); if(aa!=-1&&bb!=-1&&bb!=0){ u=(Node*)malloc(sizeof(Node)); u->exp=aa; u->coef=bb; p->next=u; p=u; } else break; } p->next=NULL; return a; } void print(Link *h) { node *p; p=h->head; while(p!=NULL) { printf("%d\t",p->exp); printf("%d\n",p->coef); p=p->next; } } //unite。cpp #include<stdio.h> #include<malloc.h> typedef struct node{ int exp; int coef; struct node *next; }Node; typedef struct link{ Node *head; int len; }Link; Link *Create() { int aa=0,bb=0; Link *a=0; Node *head=0,*p=0,*u=0; p=(Node*)malloc(sizeof(Node)); a=(Link*)malloc(sizeof(Link)); a->head=NULL; a->head=p; printf("输入一列多项式:"); scanf("%d%d",&(p->exp),&(p->coef)); while(1) { scanf("%d%d",&aa,&bb); if(aa!=-1&&bb!=-1&&bb!=0){ u=(Node*)malloc(sizeof(Node)); u->exp=aa; u->coef=bb; p->next=u; p=u; } else break; } p->next=NULL; return a; } void print(Link *h) { node *p; p=h->head; while(p!=NULL) { printf("%d\t",p->exp); printf("%d\n",p->coef); p=p->next; } } |
B2层 发表时间: 04-02-26 16:13 |
|
20CN网络安全小组版权所有
Copyright © 2000-2010 20CN Security Group. All Rights Reserved.
论坛程序编写:NetDemon
粤ICP备05087286号