| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 876 人关注过本帖
标题:多项式建立中的createpolyn函数问题
只看楼主 加入收藏
再看夕阳
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2008-10-29
收藏
 问题点数:0 回复次数:2 
多项式建立中的createpolyn函数问题
希望通过CreatePolyn 建立一个多项式,实现用户输的节点按指数的大小从小到大排列,若输入的的指数和存在的某个节点的指数相同,则改变那个节点的指数,同时不插入这个节点。运行时,PrintfPolyn 无法正确显示输入的多项式,请高人指点,谢谢了
#include<stdio.h>
#include<malloc.h>
#define TRUE   1
#define FALSE  0
#define OK     1
#define ERROR  0
#define    INFEASIBLE -1
#define OVERFLOW   -2
#define N  3

typedef int Status;
typedef struct Lnode{
    float coef;
    int expn;
    struct Lnode *next;
}Lnode,*polynomial;



Status  CreatePolyn(polynomial &l,int M){
    int i=1;
    polynomial s,p,q;
    l=(polynomial)malloc(sizeof(Lnode));
    if(!l)  return(OVERFLOW);
    l->next=NULL;
    //插入第一个节点
    q=(polynomial)malloc(sizeof(Lnode));
    if(!q)  return(OVERFLOW);
    printf("请用户输入多项式中第%d项的系数及指数,中间用空格隔开:\n",i);
    scanf("%f %d",&(q->coef),&(q->expn));
    q->next=l->next;
    l->next=q;
    //其他节点在选择插入位置时考虑指数大小        
    for(i=2;i<=M;i++)
    {
        p=l->next;//p每次指向第一个结点
        q=(polynomial)malloc(sizeof(Lnode));
        if(!q)  return(OVERFLOW);
        printf("请用户输入多项式中第%d项的系数及指数,中间用空格隔开:\n",i);
        scanf("%f %d",&(q->coef),&(q->expn));
        if(q->expn<p->expn){//在p点前插
            q->next=p;
            l->next=q;
        }
        else{
            while((p->expn<q->expn)&&(p->next!=NULL))
            {
                s=p;
                p=p->next;
            }
            if(q->expn==p->expn)
            {
                p->coef+=q->coef;
                free(q);
            }
            else if(p->expn>q->expn)
            {
                q->next=s->next;
                s->next=q;
            }
            else
            {
                q->next=p->next;
                p->next=q;
            }
        }
    }
    return OK;
}

Status PrintPolyn(polynomial &l){
    polynomial p;
    p=l->next;
    printf("该多项式是:\n");
    while(p){
        printf("%f*X[%d]  ",p->coef,p->expn);
    }
    return OK;
}

        
void main()
{
    polynomial l;
    if(CreatePolyn(l,N))
        printf("createpolyn...");
    PrintPolyn(la);
    

}
搜索更多相关主题的帖子: 多项式 createpolyn 函数 
2008-10-29 11:57
再看夕阳
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2008-10-29
收藏
得分:0 
没人顶,自己回一下
2008-10-29 15:32
再看夕阳
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2008-10-29
收藏
得分:0 
大家帮帮忙啊
2008-10-30 17:33
快速回复:多项式建立中的createpolyn函数问题
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.027007 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved