辣条星星 2022-04-13 20:46 采纳率: 100%
浏览 31
已结题

为什么输入几个数时没输出,而输入十个数时却显示最大值为9,结束符为换行符

#include<stdio.h>
#include<stdlib.h>
#define OK 1
#define ERROR -1
typedef int Status;
typedef int ElemType;
typedef struct LNode{
ElemType data;
struct LNode *next;
}LNode,*LinkList;

Status InitList(LinkList &L){
L = new LNode;
L->next = NULL;
return OK;
}

void CreateList(LinkList &L,int m){
LinkList t;
printf("请输入数值:");
for(int p = 0 ; p < m ; p++){
t = new LNode;
scanf("%d",&t->data);
t->next = L->next;
L->next = t;
}
}
void CreateList_1(LinkList &L){
LinkList t;
ElemType data;
printf("请输入数值:");
while (1){
scanf("%d",&data);
if (data =='\n') break;
t = new LNode;
t->data = data;
t->next = L->next;
L->next = t;
}
}
int GetMax(LinkList L){
LNode *pmax,*p;
if(L->next == NULL)
return NULL;
pmax = L->next;
p = L->next->next;
while (p){
if(p->data > pmax->data)
pmax = p;
p = p->next;
}
return (pmax->data);
}

int main(){
int n,a;
LinkList L,L1;
InitList(L1);
CreateList_1(L1);
a=GetMax(L1);
printf("最大结点:%d\n",a);
return 0;
}

img

  • 写回答

1条回答 默认 最新

  • qzjhjxj 2022-04-14 00:40
    关注

    输入函数这么改,供参考:

    void CreateList_1(LinkList &L){
        LinkList t;
        ElemType data;
        printf("请输入数值:");
        while (1){
              if (scanf("%d",&data) == 1){
                  t = new LNode;
                  t->data = data;
                  t->next = L->next;
                  L->next = t;
              }
              if ((getchar()) == '\n') break; //if (data =='\n') break;
        }
    }
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 4月22日
  • 已采纳回答 4月14日
  • 创建了问题 4月13日

悬赏问题

  • ¥30 codelite全屏时file、setting那一行消失了
  • ¥15 gazebo-rviz教程
  • ¥15 付费求做一个自助抢单插件
  • ¥15 bat批处理,关于数据复制问题
  • ¥50 同步两个不同结果的array中某些属性
  • ¥15 悬赏15远程操控解决问题
  • ¥15 CST复制的模型无法单独修改参数?
  • ¥15 前端页面想做个定时任务,但是使用requestAnimationFrame,setinterval和settimeout都不行
  • ¥15 根据以下文字信息,做EA模型图
  • ¥15 删除虚拟显示器驱动 删除所有 Xorg 配置文件 删除显示器缓存文件 重启系统 可是依旧无法退出虚拟显示器