鱼C论坛

 找回密码
 立即注册
查看: 1641|回复: 7

[已解决]单链表输入航班信息的问题

[复制链接]
发表于 2019-8-26 22:31:58 | 显示全部楼层 |阅读模式
52鱼币
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#include<windows.h>
typedef struct airline
{
    char line_num[10];//航班号
    char start_place[20];//起飞地
    char end_place[20];//目的地
    char start_time[10];//起飞时间
    char end_time[10];//降落时间
    int total;//座位总数
    int left;//剩余座位
    int count;
    struct airline *next;//下一个结点
} airline,*Airline;
//*初始化单链表**//
void InitList_1(Airline *pheadline)
{
        *pheadline=(Airline)malloc(sizeof(airline));
        (*pheadline)->next=NULL;
}
airline* Put_Flight_Information(int n, Airline pheadline)//录入航班函数: n为所要录入航班的数量:
{
        color(4);
        int i;
        int b;
        airline *temp,*p,*Investigation;
        Investigation=pheadline->next;
        p=pheadline;
            pheadline->count = n;
            for(i=0; i<n; i++)
            {
                    temp=(airline *)malloc(sizeof(airline));
                    printf("\t\t请输入第%d个航班的航班号:\n\t\t",i+1);
                scanf("%s",temp->line_num);
                while(Investigation!=NULL)
                {
                        if(strcmp(Investigation->next->line_num,temp->line_num)!=0)
                        {
                                Investigation=Investigation->next;
                        }
                        else
                        {
                                printf("\t\t您输入的航班号重复,请重新输入:\n\t\t");
                                scanf("%s",temp->line_num);
                                Investigation=pheadline->next;                                            
                        }
                }
                printf("\t\t请输入第%d个航班起飞点\n\t\t",i+1);
                scanf("%s",temp->start_place);
                printf("\t\t请输入第%d个航班目的地\n\t\t",i+1);
                scanf("%s",temp->end_place);
                printf("\t\t请输入第%d个航班起飞的时间\n\t\t",i+1);
                scanf("%s",temp->start_time);
                printf("\t\t请输入第%d个航班降落的时间\n\t\t",i+1);
                scanf("%s",temp->end_time);
                getchar();
                printf("\t\t请输入第%d个航班的座位\n\t\t",i+1);
                scanf("%d",temp->total);
                getchar();
                temp->left=temp->total;
                //printf("\t\t你好\n");
                p->next=temp;
                p=temp;
                //printf("\t\t你好\n");
                if(i==n-1)
                {
                        p->next=NULL;
                }
        }
        return pheadline;

}
int main()
{
        Airline bb;
        InitList_1(&bb);
        Put_Flight_Information(3,bb);
        return 0;
}
大佬们,我想问一下就是那个Put_Flight_Information函数里面,输入到最后一个(请输入第%d个航班的座位)那里,程序就会错误,不能完整输入,我已经找了好久了,找不到问题所在,望大佬们看看
最佳答案
2019-8-26 22:31:59
其中还有一两点小细节帮你改了,你自己对照着代码看 ̄  ̄)σ

最佳答案

查看完整内容

其中还有一两点小细节帮你改了,你自己对照着代码看 ̄  ̄)σ
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2019-8-26 22:31:59 From FishC Mobile | 显示全部楼层    本楼为最佳答案   
其中还有一两点小细节帮你改了,你自己对照着代码看 ̄  ̄)σ
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2019-8-26 22:35:00 | 显示全部楼层
我用的是code::Blocks写的
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2019-8-27 00:46:00 | 显示全部楼层
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#include<windows.h>
typedef struct airline
{
    char line_num[10];//航班号
    char start_place[20];//起飞地
    char end_place[20];//目的地
    char start_time[10];//起飞时间
    char end_time[10];//降落时间
    int total;//座位总数
    int left;//剩余座位
    int count;
    struct airline *next;//下一个结点
} airline,*Airline;
//*初始化单链表**//
void InitList_1(Airline*pheadline)
{
        *pheadline=(Airline)malloc(sizeof(airline));
        (*pheadline)->next=NULL;
}
airline* Put_Flight_Information(int n, Airline pheadline)//录入航班函数: n为所要录入航班的数量:
{
        //color(4);
        int i;
        int b;
        airline *temp,*p,*Investigation;
        p=pheadline;
            pheadline->count = n;
            for(i=0; i<n; i++)
            {
                    temp=(airline*)malloc(sizeof(airline));
                    printf("\t\t请输入第%d个航班的航班号:\n\t\t",i+1);
                scanf("%s",temp->line_num);
                Investigation=pheadline->next;
                while(Investigation!=NULL)
                {
                        if(strcmp(Investigation->line_num,temp->line_num)!=0)
                        {
                                Investigation=Investigation->next;
                        }
                        else
                        {
                                printf("\t\t您输入的航班号重复,请重新输入:\n\t\t");
                                scanf("%s",temp->line_num);
                                Investigation=pheadline->next;                                            
                        }
                }
                printf("\t\t请输入第%d个航班起飞点\n\t\t",i+1);
                scanf("%s",temp->start_place);
                printf("\t\t请输入第%d个航班目的地\n\t\t",i+1);
                scanf("%s",temp->end_place);
                printf("\t\t请输入第%d个航班起飞的时间\n\t\t",i+1);
                scanf("%s",temp->start_time);
                printf("\t\t请输入第%d个航班降落的时间\n\t\t",i+1);
                scanf("%s",temp->end_time);
                //getchar();
                printf("\t\t请输入第%d个航班的座位\n\t\t",i+1);
                scanf("%d",&(temp->total));
                //getchar();
                temp->left=temp->total;
                //printf("\t\t你好\n");
                p->next=temp;
                p=temp;
                //printf("\t\t你好\n");
                     p->next = NULL;
        }
        return pheadline;
}
int main()
{
        Airline bb;
        InitList_1(&bb);
        Put_Flight_Information(3,bb);
        return 0;
}
小修改了下
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2019-8-27 06:45:18 From FishC Mobile | 显示全部楼层
灰色的天空 发表于 2019-8-27 00:46
小修改了下

好像temp->total那里没有加取址符   哇  这真的是个低级错误啊  谢了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2019-8-27 06:53:11 From FishC Mobile | 显示全部楼层
灰色的天空 发表于 2019-8-27 00:46
小修改了下

还有一个问题  就是第二次输入相同的航班号的时候  没有提示您输入的航班号重复,请重新输入。是不是while循环那里有问题啊?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2019-8-27 15:34:30 From FishC Mobile | 显示全部楼层
你拷贝我给你改的。你第二次不行是因为你在添加的节点next未知,但是每次比较时又要比较到null.所以不行。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2019-8-27 16:43:58 | 显示全部楼层
灰色的天空 发表于 2019-8-27 15:35
其中还有一两点小细节帮你改了,你自己对照着代码看 ̄  ̄)σ

果然可以了 蟹蟹丫
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-11-21 01:35

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表