发新话题
打印

[原创](1)数据结构〈大杂粹〉

附件: 您所在的用户组无法下载或查看附件
多多交流.多多关照.

TOP

关于上面贴子的补充
多多交流.多多关照.

TOP

关于2002年的试题

附件: 您所在的用户组无法下载或查看附件
多多交流.多多关照.

TOP





附件: 您所在的用户组无法下载或查看附件
多多交流.多多关照.

TOP

关于2002年的试题






附件: 您所在的用户组无法下载或查看附件
多多交流.多多关照.

TOP

今年确实不卖04'的考题了。我也是像大家几个月要连续努力这样过来的,此时非常 深刻的理解考cs的同学的感受。早就想把04年的题回忆一下,总是没找到空余的时 间;现在闲下来了却发现记忆力是如此的不济。我的这些片断就算是抛砖引玉吧, 希望其他04的研友也为后来人做一点力所能及的帮助吧! :-) 数据结构: 一. 判断 总共十小题,隔的太久,详细的内容记不清了,好像第一题是说线性表的各项类 型必须相同?还考了几道关于图的概念题(整张卷子就这里提到了图),不是很难 ,比较基础的说。 二.从C++语法和软件工程的角度判断程序片断的对错,有则改之。 这个题型以前没有出现过,我自己也做的糊里糊涂,总共5题,只有一道记得比 较深刻(大概意思如下) type retvalue (type *p) //时间长了,有可能有些地方不对 { if(p == null ) return 0; return *p; } 这个函数的意思是根据返回值自动判断指针p是否为空,我觉得应该是错的,如 果p指向的值为0 ,那么就判断的有问题了 三.关于树的遍历的填空题。应该是03年或者02的第一大题的最后一道小题,由根结 点的中序遍历的序号,填写根结点左子树和右子树根节点的中序遍历序号。 四.关于线索树遍历的程序题,共两小题。具体的题目记不太清了,好像是由中序线 索树推倒前序遍历的next()函数?第二个是接着第一题问的,由next函数写出全部 的前序遍历? 五.关于排序的问答题。那段程序是shell排序(缩减增量排序?)的一个变种,第 一小题回答是什么排序,第二小题根据一个实际的排序例子写出排序过程中一趟的 详细情况,比较简单吧。 六.关于程序复杂度的计算题。大意是一个O(n2)的排序算法,20个数据时时间是t1 ,那么200个数据时时间是多少?我感觉这道题要么出得很弱,要么难得没人能做得 出来,hiahia 七.算法题。根据一个实现队列功能的类提供的操作模拟一个栈,好像是书上的一个 习题吧? 操作系统: 一.名词解释,还算比较基本吧,如果把清华出的那本操作系统书上的习题部分看一 遍就没什么大问题了,好像考了一道“进程和线程的区别”? 二.有关进程调度的问题,也是比较基本吧,像轮转,先来先服务,优先级,最短时 间优先等算法都考到了,并且结合了一个具体的例子,写出每种算法情况下的cpu执 行过程. 三.一个有关磁盘读写次数的问题,它是和文件系统的索引部分和起来考的,大意是 考察不建索引和建了索引的访问过程与访问次数(好像清华以前没考过类似的问题,不过 北大考过) 四.pv操作。标准的写者优先前提下的读者写者问题。第四版上有详细的说明。 五.关于存储系统的访问的一个问答题,和分页的知识混在了一起。大意是描述怎样 通过页表,cache,磁盘 进行寻址?
多多交流.多多关照.

TOP

[分享]程序调试01:program_01

//data structure C++ version's program37:C08_01 //这是一个演示C++中用两种方式创建数组的程序

#include<iostream.h> //包含头文件通用输入/输出流类和其他输入/输入出流类的基类

class szcl { //声明数组类:szcl int e; //定义数组元组整型变量:e public : //外部接口,也即声明函数成员与数据成员为公有类型 szcl() {e=0;} //不带参数的构造函数,允许数组不初始化 szcl(int value) {e=value;} //带参数的构造函数,数组需初始化 int get_value() {return e;} //取数组值的函数,返回值为整型 }; // 类定义结束

main() { //主程序 szcl a1[10]={8,4,4,4,4,4,4,4,4,8}; //定义了一个静态数组,并初始化 szcl *elem; //定义了一个动态数组 elem=a1; //将数组a1的首地址传送给指针elem cout<<"Ten day's study task as follows:\n\n"; //for (int i=0; i<10; i++)cout<<a1.get_value()<< "\n"; //输出动态数组元素

for (int i=1; i<=10; i++) {cout<<"Aug."<<i<<" : "<<elem->get_value()<<" hours \n\n"; elem++;} // for(int i=0; i<10; i++) { // cout<<"--"<<elem->get_value()<<"--"; //输出数组元素指针所指向的元素的值 // elem++; } //指针指向动态数组的下一元素 return 0; }

//Note: this is a program to show how to use statistics array & dynamic array.

[此贴子已经被作者于2004-8-7 21:17:53编辑过]

多多交流.多多关照.

TOP

[转帖]几道数据结构的题

运动会分数统计**
任务:参加运动会有n个学校,学校编号为1……n。比赛分成m个男子项目,和w个女子项目。项目编号为男子1……m,女子m+1……m+w。不同的项目取前五名或前三名积分;取前五名的积分分别为:7、5、3、2、1,前三名的积分分别为:5、3、2;哪些取前五名或前三名由学生自己设定。(m&lt;=20,n&lt;=20)
功能要求:1).可以输入各个项目的前三名或前五名的成绩;
2).能统计各学校总分,
3).可以按学校编号、学校总分、男女团体总分排序输出;
4).可以按学校编号查询学校某个项目的情况;可以按项目编号查询取得前三或前五名的学校。
规定:输入数据形式和范围:20以内的整数(如果做得更好可以输入学校的名称,运动项目的名称)
输出形式:有中文提示,各学校分数为整形
界面要求:有合理的提示,每个功能可以设立菜单,根据提示,可以完成相关的功能要求。
存储结构:学生自己根据系统功能要求自己设计,但是要求运动会的相关数据要存储在数据文件中。(数据文件的数据读写方法等相关内容在c语言程序设计的书上,请自学解决)请在最后的上交资料中指明你用到的存储结构;
测试数据:要求使用1、全部合法数据;2、整体非法数据;3、局部非法数据。进行程序测试,以保证程序的稳定。测试数据及测试结果请在上交的资料中写明;
2、 一元多项式计算**
任务:能够按照指数降序排列建立并输出多项式;
能够完成两个多项式的相加、相减,并将结果输入;
在上交资料中请写明:存储结构、多项式相加的基本过程的算法(可以使用程序流程图) 、源程序、测试数据和结果、算法的时间复杂度、另外可以提出算法的改进方法;
3、 订票系统**
任务:通过此系统可以实现如下功能:
录入:
可以录入航班情况(数据可以存储在一个数据文件中,数据结构、具体数据自定)
查询:
可以查询某个航线的情况(如,输入航班号,查询起降时间,起飞抵达城市,航班票价,票价折扣,确定航班是否满仓);
可以输入起飞抵达城市,查询飞机航班情况;
订票:(订票情况可以存在一个数据文件中,结构自己设定)
可以订票,如果该航班已经无票,可以提供相关可选择航班;
退票: 可退票,退票后修改相关数据文件;
客户资料有姓名,证件号,订票数量及航班情况,订单要有编号。
修改航班信息:
当航班信息改变可以修改航班数据文件
要求:
根据以上功能说明,设计航班信息,订票信息的存储结构,设计程序完成功能;

4、

6、 joseph环
任务:编号是1,2,……,n的n个人按照顺时针方向围坐一圈,每个人只有一个密码(正整数)。一开始任选一个正整数作为报数上限值m,从第一个仍开始顺时针方向自1开始顺序报数,报到m时停止报数。报m的人出列,将他的密码作为新的m值,从他在顺时针方向的下一个人开始重新从1报数,如此下去,直到所有人全部出列为止。设计一个程序来求出出列顺序。
要求:利用单向循环链表存储结构模拟此过程,按照出列的顺序输出各个人的编号。
测试数据:
m的初值为20,n=7 ,7个人的密码依次为3,1,7,2,4,7,4,首先m=6,则正确的输出是什么?
要求:
输入数据:建立输入处理输入数据,输入m的初值,n ,输入每个人的密码,建立单循环链表。
输出形式:建立一个输出函数,将正确的输出序列

7、 猴子选大王**
任务:一堆猴子都有编号,编号是1,2,3 ...m ,这群猴子(m个)按照1-m的顺序围坐一圈,从第1开始数,每数到第N个,该猴子就要离开此圈,这样依次下来,直到圈中只剩下最后一只猴子,则该猴子为大王。
要求:
输入数据:输入m,n m,n 为整数,n&lt;m
输出形式:中文提示按照m个猴子,数n 个数的方法,输出为大王的猴子是几号 ,建立一个函数来实现此功能

8、 建立二叉树,层序、先序遍历( 用递归或非递归的方法都可以)**
任务:
要求能够输入树的各个结点,并能够输出用不同方法遍历的遍历序列;分别建立建立二叉树存储结构的的输入函数、输出层序遍历序列的函数、输出先序遍历序列的函数;

9、 赫夫曼树的建立
任务 :建立建立最优二叉树函数
要求:可以建立函数输入二叉树,并输出其赫夫曼树
在上交资料中请写明:存储结构、 基本算法(可以使用程序流程图) 、输入输出、源程序、测试数据和结果、算法的时间复杂度、另外可以提出算法的改进方法;
10、 纸牌游戏**
任务:编号为1-52张牌,正面向上,从第2张开始,以2为基数,是2的倍数的牌翻一次,直到最后一张牌;然后,从第3张开始,以3为基数,是3的倍数的牌翻一次,直到最后一张牌;然后…从第4张开始,以4为基数,是4的倍数的牌翻一次, 直到最后一张牌;...再依次5的倍数的牌翻一次,6的,7的 直到 以52为基数的 翻过,输出:这时正面向上的牌有哪些?

多多交流.多多关照.

TOP

[转帖]以上第一题的程序参考如下

运动会系统 #include<stdio.h> #include<malloc.h> #include<iostream.h> #include<string.h> #define len sizeof(struct school) #define len1 sizeof(struct statitcs) struct school {int num; int project_num; char name[20]; int score; //int no; struct school *next; }; struct school *insert(void) { cout<<"********************************\n"; cout<<"特别提示:\n"; cout<<"如果想退出,请在学校编号输入0\n"; cout<<"********************************\n"; struct school *head,*rear,*p; head=NULL;rear=NULL; p=(struct school *)malloc(len); cout<<"请输入学校编号\n";cin>>p->num; cout<<"请输入项目\n";cin>>p->project_num; cout<<"请输入姓名\n";cin>>p->name; cout<<"请输入成绩\n";cin>>p->score; if(p->num==0) return NULL; while(p->num!=0) {if(head==NULL) {head=p;rear=p;} else {rear->next=p; rear=p; } p=(struct school *)malloc(len); cout<<"请输入学校编号\n";cin>>p->num; cout<<"请输入项目\n";cin>>p->project_num; cout<<"请输入姓名\n";cin>>p->name; cout<<"请输入成绩\n";cin>>p->score; } rear->next=NULL; return head; } struct school *add(struct school *t) { struct school *s,*p; p=(struct school *)malloc(len); cout<<"请输入学校编号\n";cin>>p->num; cout<<"请输入项目\n";cin>>p->project_num; cout<<"请输入姓名\n";cin>>p->name; cout<<"请输入成绩\n";cin>>p->score; s=t; if(s==NULL) { p->next=s; s=p; return s;} else {while(s->next!=NULL) {s=s->next;} s->next=p; p->next=NULL; return t;} } void print(struct school *t) {struct school *p; p=t; cout<<"学校编号\t项目\t姓名\t成绩\n"; while(p!=NULL) {cout<<p->num<<"\t\t"<<p->project_num<<"\t"<<p->name<<"\t"<<p->score<<endl; p=p->next; } } void display(struct school *t,int n) {struct school *p; p=t; while(p!=NULL) {if(p->num==n) cout<<p->project_num<<"\t"<<p->name<<"\t"<<p->score<<endl; p=p->next; } } struct school *deletes(struct school *t) {struct school *p,*k,*k_head;int flag=0; p=(struct school *)malloc(len); cout<<"请输入要删除的信息\n"; cout<<"请输入学校编号\n";cin>>p->num; cout<<"请输入项目\n";cin>>p->project_num; cout<<"请输入姓名\n";cin>>p->name; cout<<"请输入成绩\n";cin>>p->score; k=t; while(k!=NULL) {if((p->num==k->num)&&(k->project_num==p->project_num)&&!strcmp(p->name,k->name)&&(p->score==k->score)) {flag=1; if(k==t) {t=t->next;} else k_head->next=k->next; } else k_head=k; k=k->next; } if(k==NULL&&flag==0) cout<<"无法找到你要删除的信息\n"; return t; } void find(struct school *t) {struct school *p; p=t; cout<<"学校编号\t项目\t姓名\t成绩\n"; while(p!=NULL) {cout<<p->num<<"\t\t"<<p->project_num<<"\t"<<p->name<<"\t"<<p->score<<endl; p=p->next; } } void find1(struct school *t) {struct school *k;int flag=0;int num; cout<<"请输入要查找的信息\n"; cout<<"请输入学校编号\n";cin>>num; cout<<"学校编号\t项目\t姓名\t成绩\n"; k=t; while(k!=NULL) {if(num==k->num) {flag=1;cout<<k->num<<"\t\t"<<k->project_num<<"\t"<<k->name<<"\t"<<k->score<<endl;} k=k->next; } if(k==NULL&&flag==0) cout<<"无法找到你要的信息\n"; } void find2(struct school *t) {struct school *k;int flag=0;int num; cout<<"请输入要查找的信息\n"; cout<<"请输入项目号\n";cin>>num; cout<<"学校编号\t项目\t姓名\t成绩\n"; k=t; while(k!=NULL) {if(num==k->project_num) {flag=1;cout<<k->num<<"\t\t"<<k->project_num<<"\t"<<k->name<<"\t"<<k->score<<endl;} k=k->next; } if(k==NULL&&flag==0) cout<<"无法找到你要的信息\n"; } void find3(struct school *t) {struct school *k;int flag=0;char name[20]; cout<<"请输入要查找的信息\n"; cout<<"请输入姓名\n";cin>>name; cout<<"学校编号\t项目\t姓名\t成绩\n"; k=t; while(k!=NULL) {if(!strcmp(name,k->name)) {flag=1;cout<<k->num<<"\t\t"<<k->project_num<<"\t"<<k->name<<"\t"<<k->score<<endl;} k=k->next; } if(k==NULL&&flag==0) cout<<"无法找到你要的信息\n"; } struct school *deletes1(struct school *t) {struct school *k,*k_head;int flag=0;int num; cout<<"请输入要删除的信息\n"; cout<<"请输入学校编号\n";cin>>num; k=t; while(k!=NULL) {if(k->num==num) {flag=1; if(k==t) {t=t->next;} else k_head->next=k->next; } else k_head=k; k=k->next; } if(k==NULL&&flag==0) cout<<"无法找到你要删除的信息\n"; return t; } struct school *deletes2(struct school *t) {struct school *k,*k_head;int flag=0;int num; cout<<"请输入要删除的信息\n"; cout<<"请输入项目号\n";cin>>num; k=t; while(k!=NULL) {if(k->project_num==num) {flag=1; if(k==t) {t=t->next;} else k_head->next=k->next; } else k_head=k; k=k->next; } if(k==NULL&&flag==0) cout<<"无法找到你要删除的信息\n"; return t; } struct school *deletes3(struct school *t) {struct school *k,*k_head;int flag=0;char name[20]; cout<<"请输入要删除的信息\n"; cout<<"请输入姓名\n";cin>>name; k=t; while(k!=NULL) {if(!strcmp(k->name,name)) {flag=1; if(k==t) {t=t->next;} else k_head->next=k->next; } else k_head=k; k=k->next; } if(k==NULL&&flag==0) cout<<"无法找到你要删除的信息\n"; return t; } struct statitcs { int flag; int total; int no; struct statitcs *next; }; int total1(struct school *t,int n) {struct school *p; p=t; int sum=0; while(p!=NULL) {if(p->num==n) sum+=p->score; p=p->next; } return sum; } void swap(struct statitcs *t1,struct statitcs *t2) {struct statitcs *t; t=(struct statitcs *)malloc(len1); t->flag=t1->flag;t1->flag=t2->flag;t2->flag=t->flag; t->total=t1->total;t1->total=t2->total;t2->total=t->total; } struct statitcs *set_place(struct statitcs *t) {int i=1; struct statitcs *p,*q; p=t; if(p==NULL)return t; else {p->no=1; while(p->next!=NULL) {q=p->next; a:if((q->total==p->total)) {q->no=p->no;q=q->next; if(q==NULL) return t; goto a;} if(q==NULL) return t; else{p=q;i++;p->no=i;} } } return t; } struct statitcs * sort( struct statitcs *t) {struct statitcs *p1,*p2; p1=t; while(p1!=NULL) { p2=p1->next; while(p2!=NULL) {if((p1->total)<(p2->total)) swap(p1,p2); p2=p2->next; } p1=p1->next; } return t; } void show(struct statitcs *t,struct school *t1) {struct statitcs *p; p=t; while(p!=NULL) { cout<<"\n学校编号"<<p->flag<<endl; cout<<"项目\t"<<"姓名\t"<<"成绩"<<endl; display(t1,p->flag); cout<<"\t总成绩"<<p->total<<"\t总名次:"<<p->no<<endl; p=p->next; } } struct statitcs *creat(struct school *t) {int a[100];int i=0;int flag1; struct statitcs *head,*rear,*p; struct school *k;k=t; head=NULL;if(k==NULL)return NULL; p=(struct statitcs *)malloc(len1); p->flag=k->num; p->total=total1(t,p->flag); if(head==NULL) head=p;rear=p; k=k->next; a=p->flag; while(k!=NULL) {flag1=1; for(int m=0;m<=i;m++) if(a[m]==k->num) flag1=0; if(flag1) {p=(struct statitcs *)malloc(len1); p->flag=k->num; i++;a=p->flag; p->total=total1(t,p->flag); rear->next=p;rear=p;} k=k->next; } rear->next=NULL; return head; } void swap1(struct school *t1, struct school *t2) {struct school *t; t=(struct school *)malloc(len); t->num=t1->num;t1->num=t2->num;t2->num=t->num; t->score=t1->score;t1->score=t2->score;t2->score=t->score; strcmp(t->name,t1->name);strcmp(t1->name,t2->name);strcmp(t2->name,t->name); } struct school * sort1( struct school *t,int n) {struct school *p1,*p2; p1=t; while(p1!=NULL) { p2=p1->next; while(p2!=NULL&&p1->project_num==n&&p2->project_num==n) {if((p1->score)<(p2->score)) swap1(p1,p2); p2=p2->next; } p1=p1->next; } return t; } /*struct school *setplace1(struct school *t,int n) {int i=1; struct school *p,*q; p=t; if(p==NULL)return t; else {if(p->project_num==n) p->no=1; while(p->next!=NULL) {q=p->next; a:if((q->score==p->score)&&p->project_num==n&&q->project_num==n) {q->no=p->no;q=q->next; if(q==NULL) return t; goto a;} if(q==NULL) return t; else{p=q; if((q->score==p->score)&&p->project_num==n&&q->project_num==n) {i++;p->no=i;}} } } return t; } */ void show1(struct school *t,int n) {struct school *p; p=t; cout<<"项目:"<<n<<"\n学校编号\t"<<"姓名\t"<<"成绩\t"<<endl; while(p!=NULL) {if(p->project_num==n) cout<<p->num<<"\t\t"<<p->name<<"\t"<<p->score<<"\t"<<endl; p=p->next; } } void sort_display(struct school *t) {int a[100];int i=0;int flag1; struct school *k;k=t; if(k==NULL)cout<< "NULL\n"; a=k->project_num; k=k->next; while(k!=NULL) {flag1=1; for(int m=0;m<=i;m++) if(a[m]==k->project_num) flag1=0; if(flag1) {i++;a=k->project_num;} k=k->next; } for(int m=0;m<=i;m++) {t=sort1(t,a[m]); //setplace1(t,a[m]); show1(t,a[m]); } } void main() {struct school *t;struct statitcs *s;char a;int flag=1,flag1=1,flag2=1; t=NULL; cout<<"\t\t***************************************************\n"; cout<<" \t\t *请勿盗版*\t *请勿盗版*\t *请勿盗版*\n "; cout<<"\t\t\t\t产品信息:\n\t\t\t\t学号:020410107\n\t\t\t\t姓名:胡小勇\n\t\t\t\t电子邮件:huxiaoyong1983@163.com\n\t\t\t\t电话:0631-5696421\n"; cout<<" \t\t\t\t使用有问题 请与我联系\n\t\t *请勿盗版*\t *请勿盗版*\t *请勿盗版*\n "; cout<<"\t\t***************************************************\n"; cout<<"\t\t***************************************************\n"; cout<<"\t\t\t 运动会信息管理系统\n\t\t\t\t1:创建信息\n\t\t\t\t2:添加信息\n\t\t\t\t3:删除信息\n\t\t\t\t4:查找信息\n\t\t\t\t5:排序并显示\n\t\t\t\t6:退出\n"; cout<<"\t\t***************************************************\n"; cin>>a; while(a!='6') {switch(a) {case'1':flag=0;flag1=0;flag2=0; t=insert(); cout<<"你输入的所有信息\n"; print(t);break; case'2':cout<<"*****************\n1:添加一条信息\n2:退出\n*****************\n"; cin>>a; while(a!='2') {switch(a) {case'1':t=add(t);break; default:cout<<"\n请正确输入\n";break; } cout<<"*****************\n1:添加一条信息\n2:退出\n*****************\n"; cin>>a; } print(t); break; case'3':if(flag==1) {cout<<"\t\t请先输入数据\n";break;} cout<<"\t\t***************************************************\n"; cout<<"\t\t\t1:删除某一学校某一项目某一姓名某一成绩的信息\n\t\t\t2:删除某一学校的信息\n\t\t\t3:删除某一项目的信息\n\t\t\t4:删除某一姓名的信息\n\t\t\t5:退出\n"; cout<<"\t\t***************************************************\n"; cin>>a; while(a!='5') {switch(a) {case'1':t=deletes(t); cout<<"删除后的信息\n";print(t);break; case'2':t=deletes1(t);cout<<"删除后的信息\n"; print(t);break; case'3':t=deletes2(t); cout<<"删除后的信息\n"; print(t);break; case'4':t=deletes3(t); cout<<"删除后的信息\n";print(t);break; default:cout<<"请正确输入\n";break; } cout<<"\t\t***************************************************\n"; cout<<"\t\t\t1:删除某一学校某一项目某一姓名某一成绩的信息\n\t\t\t2:删除某一学校的信息\n\t\t\t3:删除某一项目的信息\n\t\t\t4:删除某一姓名的信息\n\t\t\t5:退出\n"; cout<<"\t\t***************************************************\n"; cin>>a; } break; case'4':if(flag2==1) {cout<<"\t\t请先输入数据\n";break;} cout<<"\t\t***************************************************\n"; cout<<"\t\t\t1:查找所有信息\n\t\t\t2:查找某一学校的信息\n\t\t\t3:查找某一项目的信息\n\t\t\t4:查找某一姓名的信息\n\t\t\t5:退出\n"; cout<<"\t\t***************************************************\n"; cin>>a; while(a!='5') {switch(a) {case'1':find(t);break; case'2':find1(t);break; case'3':find2(t);break; case'4':find3(t);break; default:cout<<"请正确输入\n";break; } cout<<"\t\t***************************************************\n"; cout<<"\t\t\t1:查找所有信息\n\t\t\t2:查找某一学校的信息\n\t\t\t3:查找某一项目的信息\n\t\t\t4:查找某一姓名的信息\n\t\t\t5:退出\n"; cout<<"\t\t***************************************************\n"; cin>>a; } break; case'5':if(flag1==1) {cout<<"\t\t请先输入数据\n";break;} cout<<"\t\t*************************************\n"; cout<<"\t\t1:按学校总成绩排序\n\t\t2:按每个项目的成绩高低排序\n\t\t3:退出\n"; cout<<"\t\t*************************************\n"; cin>>a; while(a!='3') {switch(a) {case'1':s=creat(t);s=sort(s);s=set_place(s);show(s,t);break; case'2':sort_display(t);break; default:cout<<"请正确输入\n";break; } cout<<"\t\t*************************************\n"; cout<<"\t\t1:按学校总成绩排序\n\t\t2:按每个项目的成绩高低排序\n\t\t3:退出\n"; cout<<"\t\t*************************************\n"; cin>>a; } break; default:cout<<"请正确输入\n"; } cout<<"\t\t***************************************************\n"; cout<<"\t\t\t 运动会成绩信息系统\n\t\t\t\t1:创建信息\n\t\t\t\t2:添加信息\n\t\t\t\t3:删除信息\n\t\t\t\t4:查找信息\n\t\t\t\t5:排序并显示\n\t\t\t\t6:退出\n"; cout<<"\t\t***************************************************\n"; cin>>a; } cout<<"谢谢使用\n"; }
多多交流.多多关照.

TOP

[转帖]以上的程序参考如下

停车场系统 #include<iostream.h> #include<string.h> #include<iomanip.h> #define StackSize 8 typedef struct {char Car_number[StackSize][10]; int top; }SqStack;//定义栈的结构 void InitStack(SqStack &S)//初始栈的栈顶 {S.top=-1; } int StackEmpty(SqStack &S)//判断栈是否为空 {if(S.top==-1) return 1; else return 0; } int StackFull(SqStack &S)//判断栈是否为满 {if(S.top==StackSize-1) return 1; else return 0; } void StackPush(SqStack &S,char e[])//压栈 {S.top++; strcpy(S.Car_number[S.top],e); } void StackDisplay(SqStack &S)//显示栈的元素 {cout<<"停车场的车:"<<endl; int i; for(i=S.top+1;i<StackSize;i++) cout<<"|"<<setiosflags(ios::left)<<setw(10)<<""<<"|"<<endl; for(i=S.top;i>=0;i--) cout<<"|"<<setiosflags(ios::left)<<setw(10)<<S.Car_number<<"|"<<endl; cout<<"------------"<<endl; } void StackPop(SqStack &S,char e[])//将特定值元素弹出 {int flag=0;int k; if(StackEmpty(S)) cout<<e<<"号码的车找不到!"<<endl; else {for(int i=0;i<=S.top&&!flag;i++) if(!strcmp(S.Car_number,e)) { k=i;flag=1;} if(!flag) cout<<e<<"号码的车找不到!"<<endl; else {for(i=k;i<S.top;i++) strcpy(S.Car_number,S.Car_number[i+1]); S.top--; } } } #define QueueSize 9 typedef struct {char Car_number[QueueSize][10]; int front ,rear; }SQueue;//定义队列的结构 void InitQueue(SQueue &SQ)//初始队列 {SQ.front=SQ.rear=0; } int QueueEmpty(SQueue &SQ)//判断队列是否为空 {if(SQ.front==SQ.rear) return 1; else return 0; } int QueueFull(SQueue &SQ)//判断队列是否为满 {if((SQ.rear+1)%QueueSize==SQ.front) return 1; else return 0; } void EnQueue(SQueue &SQ,char e[])//元素进队尾 {SQ.rear=(SQ.rear+1)%QueueSize; strcpy(SQ.Car_number[SQ.rear],e); } void OutQueue(SQueue &SQ,char e[])//队首出队列 { SQ.front=(SQ.front+1)%QueueSize; strcpy(e,SQ.Car_number[SQ.front]); } void QueueDisplay(SQueue &SQ)//显示队列中的元素 {cout<<"便道上的车:\n"; for(int i=(SQ.front+1)%QueueSize;i!=(SQ.rear+1)%QueueSize;i=(i+1)%QueueSize) cout<<SQ.Car_number<<"<---"; cout<<endl; } void Special_OutQueue(SQueue &SQ,char e[])//特定元素出队列 {int k,flag=0,j; if(QueueEmpty(SQ)) cout<<e<<"号码的车找不到!"<<endl; else {for(k=(SQ.front+1)%QueueSize;k!=(SQ.rear+1)%QueueSize&&!flag;k=(k+1)%QueueSize) if(!strcmp(SQ.Car_number[k],e)) { flag=1; } if(!flag) cout<<e<<"号码的车找不到!"<<endl; else {k--; for(j=k;j!=SQ.rear;j=(j+1)%QueueSize) strcpy(SQ.Car_number[j],SQ.Car_number[(j+1)%QueueSize]); SQ.rear=(SQ.rear-1)%QueueSize; } } } void Car_In(SqStack &S,SQueue &SQ)//模拟进车 {char e[10]; cout<<"please input the number of the car which is coming!\n"; cin>>e; if(!StackFull(S)&&QueueEmpty(SQ)) StackPush(S, e); else if(StackFull(S)&&!QueueFull(SQ)) EnQueue(SQ,e); else if(StackFull(S)&&QueueFull(SQ)) cout<<"The stack and the queue are full,please come later!\n "; } void Car_Reset(SqStack &S,SQueue &SQ)//自动调整 { char e[10]; while(!StackFull(S)&&!QueueEmpty(SQ)) {OutQueue(SQ, e); StackPush(S,e); } } void Car_Out(SqStack &S,SQueue &SQ)//模拟出车 {int choice;char number[10]; cout<<"1:停车场的有车要离开\n2:便道上有车要离开\n"; cin>>choice; switch(choice) {case 1: cout<<"input the car number which is leaving!\n"; cin>>number; StackPop(S,number); break; case 2: cout<<"input the car number which is leaving!\n "; cin>>number; Special_OutQueue(SQ,number); break; default: cout<<"error ";break; } Car_Reset(S,SQ); } void re_start(SqStack &S,SQueue &SQ)//使停车场和便道车为空 {S.top=-1; SQ.front=SQ.rear=0; } void display_all(SqStack &S,SQueue &SQ)//显示停车场和便道车的情况 {QueueDisplay(SQ); StackDisplay(S); } void di() {cout<<"\t\t********************************************\n"; cout<<"\t\t1:模拟进车 3:显示停车场和便道车的情况 \n"; cout<<"\t\t2:模拟出车 4:重新开始(停车场和便道车为空) \n"; cout<<"\t\t5:退出\n"; cout<<"\t\t********************************************\n"; } void main() {int m; SqStack S; InitStack(S); SQueue SQ; InitQueue(SQ); cout<<"\t\t********************************************\n"; cout<<"\t\t\t\t停车场模拟系统\n"; cout<<"\t\t\t\t开发者: 胡小勇\n"; cout<<"\t\t\t\t\t时间:2004/5/21\n" ; cout<<"\t\t********************************************\n"; di(); cin>>m; while(m!=5) {switch(m) {case 1:Car_In(S,SQ);break; case 2:Car_Out(S,SQ);break; case 3: display_all(S,SQ);break; case 4:re_start(S,SQ);break; default: cout<<"why do you input the wrong number!\n"; } di(); cin>>m; } }
多多交流.多多关照.

TOP

发新话题