mo_moo 2022-03-21 20:31 采纳率: 50%
浏览 40

c语言初识链表 c语言程序设计

已知一个正整数序列,个数未知,但至少有一个元素,你的任务是建立一个单链表,并使用该链表存储这个正整数序列,然后统计这个序列中元素的最大值与最小值,计算序列全部元素之和。正整数的输入用-1作为结束标志,注意-1不算这个正整数序列中的元素(不要统计-1)。
Input
一个正整数序列,正整数序列元素的个数未知,但以输入“-1”结束,输入“-1”前至少输入一个正整数。序列中的元素范围在1—999999999之间。
Output
三个正整数,即最大值、最小值、所有元素之和。
数据最多的测试用例节点数在1000这个数量级,所有整数可以用int型存储。
请注意输入输出格式。
Sample Input Copy
1 4 99 21 50 61 32 4 -1
Sample Output Copy
The maximum,minmum and the total are:99 1 272
以下是自己写的程序,在devc上运行也没问题,但放上oj就显示编译错误了
想请问是什么问题,麻烦各位康康!谢谢~~

#include<stdio.h>
#include<stdlib.h> 
#include<malloc.h>
struct node{
    int value;
    node* next;
};
int main(){
    node*head=(node*)malloc(sizeof(node));
    node*flag=head;
    scanf("%d",&flag->value);
    int i=0,max,min;
    if(i==0){
            min=flag->value;
            i++;
        }
    while(flag->value!=-1){
        flag->next=(node*)malloc(sizeof(node));
        flag=flag->next;
        scanf("%d",&flag->value);
        if(flag->value>max&&flag->value!=-1)
        {
            max=flag->value;
        }
        else if(flag->value<min&&flag->value!=-1)
        {
            min=flag->value;
         } 
    }
    flag->next=NULL;
    flag=head;
    int sum=0;
    while(flag!=NULL)
    {
        sum+=flag->value;
        flag=flag->next;
    }
    printf("The maximum,minmum and the total are:%d %d %d",max,min,sum+1);
    getchar();
    return 0;
}

  • 写回答

1条回答 默认 最新

  • qzjhjxj 2022-03-21 21:20
    关注

    修改如下,供参考:

    #include<stdio.h>
    #include<stdlib.h> 
    #include<malloc.h>
    #include<windows.h>
    struct node{
        int   value;
        node* next;
    };
    int main(){
        struct node*head = NULL,*flag = NULL,*end = NULL;
        int i,max=0,min=0,sum=0;
        while(1){
            scanf("%d",&i);
            if (i == -1)  break;
            flag =(struct node*)malloc(sizeof(struct node));
            flag->next = NULL;
            flag->value = i;
            if (head == NULL){
                head = flag;
                sum = max = min = flag->value;
            }
            else{
                end->next = flag;
                if(flag->value>max)
                   max=flag->value;
                if(flag->value<min)
                   min=flag->value;
                sum += flag->value;
            }
            end = flag;
        }
        printf("The maximum,minmum and the total are:%d %d %d",max,min,sum);
        system("pause");
        return 0;
    }
    
    
    评论 编辑记录

报告相同问题?

问题事件

  • 创建了问题 3月21日

悬赏问题

  • ¥20 关于R studio 做精确稳定检验的问题!(语言-r语言)
  • ¥50 用贝叶斯决策方法,设计CAD程序
  • ¥20 关于#目标检测#的问题:(qq收集表到时间才能填写,填写的份数有上限)
  • ¥50 ZYNQ7020双核FLAHS烧写的问题
  • ¥20 ue 5 中想要实现第一人称人物左右行走摆动的效果,摄像头只向右摆动一次(关键词-结点)
  • ¥15 钢岔管添加弹性约束模拟围岩作用
  • ¥15 AD9164瞬时带宽1.8G,怎么计算出来?
  • ¥15 鼠标右键,撤销删除 复制 移动,要怎样删除
  • ¥15 服务器安装php5.6版本
  • ¥20 系统工程中,状态空间模型中状态方程的应用。请猛男来完整讲一下下面所有问题