论坛: 编程破解 标题: 关于多项式的相加。 复制本贴地址    
作者: 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号