欢迎来到天天文库
浏览记录
ID:36224136
大小:35.47 KB
页数:16页
时间:2019-05-07
《航空订票系统c++数据结构大作业》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、#include#include#include#include#defineM450//定义数组的空间为不可改变的整数usingnamespacestd;intmain();//申明主函数structflight//航班信息{charterminal[10];//终点站名charnumber[10];//航班号charid[10];//飞机号chardate[10];//飞行日期intmember;//乘员定额intrest
2、;//余票量structflight*next;//指向下一个节点的指针};structcustom//客户信息{charname[10];//姓名charnumber[10];//航班号intcount;//数量intgrade;//舱位等级structcustom*next;//指向下一个节点的指针};structflight*a[M];//flight类型的指针数组structnode//二叉树节点{structcustom*base;node*r;//左孩子node*l;//右孩子};ch
3、arch[100];intjudge(char(&ch)[100]){inti,s=0,x=0;if(strlen(ch)==3){for(i=0;i='0'&&ch[i]<='9')s++;}if(s==strlen(ch)){for(i=0;i4、//取余unsignedlonghashvalue(char*str)//将输入字符串转换成长整型数返回{inti,l;unsignedlongret=0;unsignedshort*s;if(str==NULL)return(0);l=(strlen(str)+1)/2;s=(unsignedshort*)str;for(i=0;i5、=newflight,*t=newflight;inti=0,val;obj.open("d:\fly.txt",ios::in);//打开航班信息的文件while(obj>>s->terminal>>s->number>>s->id>>s->date>>s->member>>s->rest)//提取文件信息{val=hash(hashvalue(s->terminal));while(a[hash(val)]!=NULL)//如果数组中的元素不为空,建立链表{if(!strcmp(a[hash6、(val)]->terminal,s->terminal)){t=a[hash(val)];while(t->next)//将节点往下移,直至最后节点{t=t->next;}t->next=s;t=s;t->next=NULL;//末尾节点的next赋空break;}elseval++;//哈希表冲突,往数组后面的空位移动}if(a[hash(val)]==NULL)//如果哈希表中元素为空,赋给从文件中提取的值{a[hash(val)]=s;a[hash(val)]->next=NULL;}s=7、newflight;}obj.close();//关闭文件}voidcreate(node*&root,custom*&s)//生成二分查找树{custom*t=newcustom;if(root==NULL)//当该节点为空时赋值{root=newnode;root->base=s;root->l=NULL;root->r=NULL;}elseif(hash(hashvalue(s->name))>hash(hashvalue(root->base->name)))create(root->r,8、s);//比当前节点小,往左孩子移elseif(hash(hashvalue(s->name))base->name)))create(root->l,s);//比当前节点大,往右孩子移else//等于当前节点{t=root->base;while(t->next!=NULL)//将节点往下移,直至最后节点t=t->next;t->next=s;//到尾部添加形成线性表t=s;t->next=NULL;//末尾节点的next赋空}}voi
4、//取余unsignedlonghashvalue(char*str)//将输入字符串转换成长整型数返回{inti,l;unsignedlongret=0;unsignedshort*s;if(str==NULL)return(0);l=(strlen(str)+1)/2;s=(unsignedshort*)str;for(i=0;i5、=newflight,*t=newflight;inti=0,val;obj.open("d:\fly.txt",ios::in);//打开航班信息的文件while(obj>>s->terminal>>s->number>>s->id>>s->date>>s->member>>s->rest)//提取文件信息{val=hash(hashvalue(s->terminal));while(a[hash(val)]!=NULL)//如果数组中的元素不为空,建立链表{if(!strcmp(a[hash6、(val)]->terminal,s->terminal)){t=a[hash(val)];while(t->next)//将节点往下移,直至最后节点{t=t->next;}t->next=s;t=s;t->next=NULL;//末尾节点的next赋空break;}elseval++;//哈希表冲突,往数组后面的空位移动}if(a[hash(val)]==NULL)//如果哈希表中元素为空,赋给从文件中提取的值{a[hash(val)]=s;a[hash(val)]->next=NULL;}s=7、newflight;}obj.close();//关闭文件}voidcreate(node*&root,custom*&s)//生成二分查找树{custom*t=newcustom;if(root==NULL)//当该节点为空时赋值{root=newnode;root->base=s;root->l=NULL;root->r=NULL;}elseif(hash(hashvalue(s->name))>hash(hashvalue(root->base->name)))create(root->r,8、s);//比当前节点小,往左孩子移elseif(hash(hashvalue(s->name))base->name)))create(root->l,s);//比当前节点大,往右孩子移else//等于当前节点{t=root->base;while(t->next!=NULL)//将节点往下移,直至最后节点t=t->next;t->next=s;//到尾部添加形成线性表t=s;t->next=NULL;//末尾节点的next赋空}}voi
5、=newflight,*t=newflight;inti=0,val;obj.open("d:\fly.txt",ios::in);//打开航班信息的文件while(obj>>s->terminal>>s->number>>s->id>>s->date>>s->member>>s->rest)//提取文件信息{val=hash(hashvalue(s->terminal));while(a[hash(val)]!=NULL)//如果数组中的元素不为空,建立链表{if(!strcmp(a[hash
6、(val)]->terminal,s->terminal)){t=a[hash(val)];while(t->next)//将节点往下移,直至最后节点{t=t->next;}t->next=s;t=s;t->next=NULL;//末尾节点的next赋空break;}elseval++;//哈希表冲突,往数组后面的空位移动}if(a[hash(val)]==NULL)//如果哈希表中元素为空,赋给从文件中提取的值{a[hash(val)]=s;a[hash(val)]->next=NULL;}s=
7、newflight;}obj.close();//关闭文件}voidcreate(node*&root,custom*&s)//生成二分查找树{custom*t=newcustom;if(root==NULL)//当该节点为空时赋值{root=newnode;root->base=s;root->l=NULL;root->r=NULL;}elseif(hash(hashvalue(s->name))>hash(hashvalue(root->base->name)))create(root->r,
8、s);//比当前节点小,往左孩子移elseif(hash(hashvalue(s->name))base->name)))create(root->l,s);//比当前节点大,往右孩子移else//等于当前节点{t=root->base;while(t->next!=NULL)//将节点往下移,直至最后节点t=t->next;t->next=s;//到尾部添加形成线性表t=s;t->next=NULL;//末尾节点的next赋空}}voi
此文档下载收益归作者所有