| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1600 人关注过本帖
标题:对单链表使用双重for循环出现特定语句就无法进行循环
只看楼主 加入收藏
五力平衡
Rank: 2
等 级:论坛游民
帖 子:8
专家分:10
注 册:2019-7-17
收藏
 问题点数:0 回复次数:3 
对单链表使用双重for循环出现特定语句就无法进行循环
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
typedef float DataType;
typedef struct linknode
{
    DataType data1;
    DataType data2;
    struct linknode *next;
}LinkList;
void main()
{
    float a,n,x,sum=0;
    int key=1,m=0,j=0,z,k;
    LinkList *s,*last,*head1,*head2,*head3,*p1,*p2,*p3,*t;
    head1=(LinkList *)malloc(sizeof(LinkList));
    head2=(LinkList *)malloc(sizeof(LinkList));
    head3=(LinkList *)malloc(sizeof(LinkList));
    p1=(LinkList *)malloc(sizeof(LinkList));
    p2=(LinkList *)malloc(sizeof(LinkList));
    p3=(LinkList *)malloc(sizeof(LinkList));
    last=head1;
    while(key==1)
    {
        printf("一一输入第一个函数式的系数、指数和(继续输入指令1或停止输入指令0),用逗号隔开。\n输入函数1数据中\n");
        scanf("%f,%f,%d",&a,&n,&key);
        t=(LinkList *)malloc(sizeof(LinkList));
        t->data1=a;t->data2=n;
        t->next=NULL;
        last->next=t;
        last=t;
        m++;
    }
        last=head2;    key=1;
        while(key==1)
    {
        printf("一一输入第二个函数式的系数、指数和(继续输入指令1或停止输入指令0),用逗号隔开。\n输入函数1数据中\n");
        scanf("%f,%f,%d",&a,&n,&key);
        s=(LinkList *)malloc(sizeof(LinkList));
        s->data1=a;s->data2=n;
        s->next=NULL;
        last->next=s;
        last=s;
        j++;
    }
        p1=head1->next;
        p2=head2->next;
        printf("f(x)=");
        for(z=1;z<=m;z++)
        {sum=0;sum+=p1->data1;x=p1->data2;
            for(k=1;k<=j;k++)
            {
                if(x==p2->data2)
                sum+=p2->data1;p2=p2->next;
            }
            p1=p1->next;
            printf("+(%6.1fx^%6.1f)",sum,x);
            
        }
   
}求大佬救命
搜索更多相关主题的帖子: 输入 malloc sizeof next 循环 
2020-09-16 02:48
五力平衡
Rank: 2
等 级:论坛游民
帖 子:8
专家分:10
注 册:2019-7-17
收藏
得分:0 
出现倒数第三行的p2=p2->next;外层循环就只执行一次
2020-09-16 02:50
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:528
帖 子:9007
专家分:53942
注 册:2011-1-18
收藏
得分:0 
既不肯贴出题目(别人无从知道你想实现什么功能),又不肯贴出输入数据(别人连调试都没办法),一切都只能靠猜测。

程序代码:
#include <stdio.h>
#include <stdlib.h>

typedef struct linknode
{
    float data1;
    float data2;
    struct linknode* next;
} LinkList;

LinkList* polynomial_input( const char* tip )
{
    LinkList* head = NULL;
    for( LinkList** p=&head; ; )
    {
        printf( "%s", tip );
        float a, n; int key;
        for( ; 3!=scanf("%f ,%f ,%d",&a,&n,&key); )
        {
            printf("格式错误,重新输入: ");
            scanf( "%*[\n]%*c" );
        }

        (*p) = malloc(sizeof(LinkList));
        (*p)->data1 = a;
        (*p)->data2 = n;
        (*p)->next = NULL;
        p = &(*p)->next;

        if( key == 0 )
            break;
    }
    putchar( '\n' );
    return head;
}

void polynomial_output( const LinkList* head )
{
    for( ; head; head=head->next )
        printf( "+(%.1fx^%.1f)", head->data1, head->data2 );
    putchar( '\n' );
}

void polynomial_free( LinkList* head )
{
    for( ; head;  )
    {
        LinkList* p = head;
        head = head->next;
        free( p );
    }
}

void polynomial_append( LinkList** phead, float data1, float data2 )
{
    for( ; *phead; phead=&(*phead)->next )
    {
        if( (*phead)->data2 == data2 )
        {
            (*phead)->data1 += data1;
            return;
        }
    }

    (*phead) = malloc(sizeof(LinkList));
    (*phead)->data1 = data1;
    (*phead)->data2 = data2;
    (*phead)->next = NULL;
}

LinkList* polynomial_combine( const LinkList* head1, const LinkList* head2 )
{
    LinkList* result = NULL;
    for( const LinkList* p=head1; p; p=p->next )
        polynomial_append( &result, p->data1, p->data2 );
    for( const LinkList* p=head2; p; p=p->next )
        polynomial_append( &result, p->data1, p->data2 );
    return result;
}

int main( void )
{
    LinkList* head1 = polynomial_input( "输入第一个多项式的系数、指数、以及是否继续(0停止,1继续),用逗号隔开:" );
    LinkList* head2 = polynomial_input( "输入第二个多项式的系数、指数、以及是否继续(0停止,1继续),用逗号隔开:" );

    LinkList* result = polynomial_combine( head1, head2 );
    polynomial_output( result );
    polynomial_free( result );

    polynomial_free( head2 );
    polynomial_free( head1 );
}


输入第一个多项式的系数、指数、以及是否继续(0停止,1继续),用逗号隔开:6, 7, 1
输入第一个多项式的系数、指数、以及是否继续(0停止,1继续),用逗号隔开:4, 5, 1
输入第一个多项式的系数、指数、以及是否继续(0停止,1继续),用逗号隔开:2, 3, 0

输入第二个多项式的系数、指数、以及是否继续(0停止,1继续),用逗号隔开:8, 3, 1
输入第二个多项式的系数、指数、以及是否继续(0停止,1继续),用逗号隔开:9, 7, 1
输入第二个多项式的系数、指数、以及是否继续(0停止,1继续),用逗号隔开:1, 8, 0

+(15.0x^7.0)+(4.0x^5.0)+(10.0x^3.0)+(1.0x^8.0)

2020-09-16 10:37
五力平衡
Rank: 2
等 级:论坛游民
帖 子:8
专家分:10
注 册:2019-7-17
收藏
得分:0 
回复 3楼 rjsp
谢谢版主,下次会注意的
2020-09-16 12:09
快速回复:对单链表使用双重for循环出现特定语句就无法进行循环
数据加载中...
 
   



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

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