新手小白1640 2020-03-26 14:57 采纳率: 50%
浏览 174

尾插法建表显示错误,请问应该怎么改?

//尾插法建表
int CreateListR(LinkList L)
{
int i,n;
LinkList *s,*q,*p;
p=L;
while(p->next!=NULL)
{
p=p->next;
}
printf("请输入需要录入的图书信息的个数:n=");
scanf("%d",&n);
for(i=1;i<n+1;i++)
{
s=(LinkList
)malloc(sizeof(LinkList));
printf("书号 书名 价格\n");
scanf("%s%s%s",&s->data.ISBN,&s->data.name,&s->data.price);
q=L->next;
if(q==NULL){
p->next=s;
p=s;
p->next=NULL;
printf("录入成功!\n");
continue;
}
while(q!=NULL)
{
if(strcmp(s->data.name,q->data.name)==0){
printf("此图书已存在!");
printf("请重新输入:\n");
scanf("%s%s%s",&s->data.ISBN,&s->data.name,&s->data.price);
}
q=q->next;
}
p->next=s;
p=s;
p->next=NULL;
printf("录入成功!\n");
}
return 0;
}

错误:
:\数据\的\VC.CPP(30) : error C2227: left of '->next' must point to class/struct/union
D:\数据\的\VC.CPP(30) : fatal error C1903: unable to recover from previous error(s); stopping compilation

请问怎么改

  • 写回答

1条回答 默认 最新

  • threenewbee 2020-03-26 20:40
    关注

    问题解决的话,请点下采纳

    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
    
    typedef struct
    {
        char ISBN[50];
        char name[50];
        char price[50];
    } Data;
    
    typedef struct Node
    {
        Data data;
        Node * next;
    }LinkList;
    int CreateListR(LinkList *L)
    {
        int i,n;
        LinkList *s,*q,*p;
        p=L;
        while(p->next!=NULL)
        {
            p=p->next;
        }
        printf("请输入需要录入的图书信息的个数:n=");
        scanf("%d",&n);
        for(i=1;i<n+1;i++)
        {
            s=(LinkList *)malloc(sizeof(LinkList));
            printf("书号 书名 价格\n");
            scanf("%s%s%s",&s->data.ISBN,&s->data.name,&s->data.price);
            q=L->next;
            if(q==NULL){
                p->next=s;
                p=s;
                p->next=NULL;
                printf("录入成功!\n");
                continue;
            }
            while(q!=NULL)
            {
                if(strcmp(s->data.name,q->data.name)==0){
                    printf("此图书已存在!");
                    printf("请重新输入:\n");
                    scanf("%s%s%s",&s->data.ISBN,&s->data.name,&s->data.price);
                }
                q=q->next;
            }
            p->next=s;
            p=s;
            p->next=NULL;
            printf("录入成功!\n");
        }
        return 0;
    }
    
    int main()
    {
        LinkList l;
        l.next = NULL;
        CreateListR(&l);
        Node * p = &l->next;
        while (p)
        {
            printf("%s %s %s\n", p->data.ISBN, p->data.name, p->data.price);
            p = p->next;
        }
        return 0;
    }
    
    评论

报告相同问题?

悬赏问题

  • ¥100 Jenkins自动化部署—悬赏100元
  • ¥15 关于#python#的问题:求帮写python代码
  • ¥20 MATLAB画图图形出现上下震荡的线条
  • ¥15 关于#windows#的问题:怎么用WIN 11系统的电脑 克隆WIN NT3.51-4.0系统的硬盘
  • ¥15 perl MISA分析p3_in脚本出错
  • ¥15 k8s部署jupyterlab,jupyterlab保存不了文件
  • ¥15 ubuntu虚拟机打包apk错误
  • ¥199 rust编程架构设计的方案 有偿
  • ¥15 回答4f系统的像差计算
  • ¥15 java如何提取出pdf里的文字?