文档库 最新最全的文档下载
当前位置:文档库 › c语言大数据结构停车场系统实验报告材料

c语言大数据结构停车场系统实验报告材料

c语言大数据结构停车场系统实验报告材料
c语言大数据结构停车场系统实验报告材料

实验题目:实验六停车场管理

班级:11计算机2班姓名:仇越学号:11070204 日期:10.30

一、需求分析

1.程序的功能:

设停车场内只有一个可停放n辆汽车的狭长通道,且只有一个大门可供汽车进出。汽车在停车场内按车辆到达时间的先后顺序,依次由北向南排列(大门在最南端,最先到达的第一辆车停放在车场的最北端),若车场内已停满n辆汽车,则后来的汽车只能在门外的便道上等候,一旦有车开走,则排在便道上的第一辆车即可开入;当停车场内某辆车要离开时,在它之后开入的车辆必须先退出车场为它让路,待该辆车开出大门外,其它车辆再按原次序进入车场,每辆停放在车场的车在它离开停车场时必须按它停留的时间长短交纳费用。

(1)建立静态数组栈作为模拟停车场,动态链表栈作为模拟便道。

(2)车辆到达,停入停车场或者便道,记录车牌号,到达时间。

(3)车辆离开,记录离开时间,输出停车时间和收费。将便道内车停入停车场,记录进入时间。

(4)列表显示停车场,便道内车辆情况。

(5)列表显示历史记录(已经离开车的车牌号,到达离开时间,收费)。

2.输入输出的要求:

(1)输入:字符串车牌号,到达时间,离开时间

(2)输出:停车时间和收费,停车场和便道的停车情况,历史记录。

3.测试数据:

1 停车场:车牌号苏A1111 到达时间12:20 离开时间13:00

2 停车场:车牌号苏A1111 到达时间12:20 离开时间13:00;车牌号苏A2222 到达时间13:00 离开时间14:00

选择停车场内1号位离开,再选择停车场内2号位离开

3 停车场:车牌号苏A1111 到达时间12:20 离开时间13:00;车牌号苏A2222 到达时间13:00 离开时间14:00

便道:车牌号苏A3333 到达时间12:30 离开时间13:00;车牌号苏A4444 到达时间13:00 离开时间15:00 选择停车场内2号位离开,再选择选择停车场内2号位离开

4 停车场:车牌号苏A1111 到达时间12:20 离开时间13:00;车牌号苏A2222 到达时间13:00 离开时间14:00

便道:车牌号苏A3333 到达时间12:30 离开时间13:00;车牌号苏A4444 到达时间13:00 离开时间15:00 输出停车场内和便道的停车情况

5 停车场:车牌号苏A1111 到达时间12:20 离开时间13:00;车牌号苏A2222 到达时间13:00 离开时间14:00

便道:车牌号苏A3333 到达时间12:30 离开时间13:00;车牌号苏A4444 到达时间13:00 离开时间15:00 让苏A1111和苏A2222离开后,再输出停车场内和便道的停车情况,以及历史记录

6 选择4退出系统

二.概要设计

4.本程序所用的抽象数据类型的定义

ADT Stack{

数据对象:D={ai|ai为ElemSet,i为正整数}

数据关系:R1={|ai-1,ai都属于D,i为正整数}

基本操作:InitStack(&S) //构建一个空栈S

DestroyStack(&S) //S 被销毁

StackLength(S) //返回 S 的元素个数,即栈的长度。

StackEmpty(s) //若栈 S 为空栈,则返回 TRUE,否则 FALE。

GetTop(S, &e) //用 e 返回 S 的栈顶元素

ClearStack(&S) //将 S 清为空栈

Push(&S, e) //入元素 e 为新的栈顶元素。

Pop(&S, &e) //删除 S 的栈顶元素,并用 e 返回其值

2. 主程序的流程及各程序模块之间的层次关系

(1)流程:○1输出菜单“1.车辆达到 2.车辆离开 3.列表显示 4.退出系统”。

○2先选择1,输入车牌号,输出车在停车场的位置,再输入到达时间。

○3随意选择1,2,3,4。若选1,停车场满后停在便道上,输入车牌号。

○4选择2,输入要离开的车辆在停车场的位置和离开时间。输出停车时间和费用。若便

道上有车,将一辆车移到停车场,输入现在时间。

○5选择3,输出菜单“1.停车场 2.便道 3.历史记录 4.返回”。选择1,2,3,分别

显示停车场,便道,历史记录的情况。选择4返回到开始菜单。

○6最后选择4结束程序。

二、详细设计

1.采用c语言定义相关的数据类型

(1)typedef struct time

{

int hour;

int min;

}Time; /*时间结点*/

(2)typedef struct node

{

char num[10];

Time reach;

Time leave;

int time;//车停在停车场的总时间

}CarNode; /*车辆信息结点*/

(3)typedef struct NODE

{

CarNode stack[MAX+1];

int top;

}SeqStackCar; /*模拟车站*/

(4)typedef struct car

{

CarNode data;

struct car *next;

}QueueNode;

(5)typedef struct Node

{

QueueNode *head;

QueueNode *rear;

}LinkQueueCar; /*模拟通道*/

2.写出各模块的伪码算法

(1)主函数

void main()

{

SeqStackCar Enter,Temp;

LinkQueueCar Wait,Leavecar;

int ch;

InitStack(&Enter); /*初始化车站*/

InitStack(&Temp); /*初始化让路的临时栈*/

InitQueue(&Wait); /*初始化通道*/

InitQueue(&Leavecar); /*初始化离开的车*/

while(1)

{

printf("\n************************************************");

printf("\n1. 车辆到达");

printf(" 2. 车辆离开");

printf(" 3. 列表显示");

printf(" 4. 退出系统\n");

printf("************************************************\n");

while(1)

{

scanf("%d",&ch);

if(ch>=1&&ch<=4)break;

else printf("\n请选择: 1|2|3|4.");

}

switch(ch)

{

case 1:Arrival(&Enter,&Wait);break; /*车辆到达*/

case 2:Leave(&Enter,&Temp,&Wait,&Leavecar);break; /*车辆离开*/

case 3:List(&Enter,&Wait,&Leavecar);break; /*列表打印信息*/

case 4:exit(0); /*退出主程序*/

default: break;

}}}

(2)初始化栈

void InitStack(SeqStackCar *carstack) /*初始化栈*/

{

carstack->top=0;

}

(3)初始化便道

int InitQueue(LinkQueueCar *carwait) /*初始化便道*/

{

carwait->head=carwait->rear=(QueueNode *)malloc(sizeof(QueueNode)); if(!carwait->head) exit(OVERFLOW);

carwait->head->next=NULL;//队列初始化为NULL

return OK;

}

(4)车辆到达,登记车牌号和到达时间

int Arrival(SeqStackCar *enter,LinkQueueCar *wait) /*车辆到达*/

{

if(enter->top

{

printf("请输入车牌号<例如:苏A8888> : ");

scanf("%s",enter->stack[enter->top].num);

printf("该车在停车场第%d个位置\n",(enter->top)+1);

printf("请输入该车的到达时间<例如:12:00> : ");

scanf("%d:%d",&(enter->stack[enter->top].reach.hour),&(enter->stack[enter->top].reach.m in));

(enter->top)++;

return OK;

}

else

{ //车辆停在便道上并且登记车牌和到达时间

EnQueue(wait);

printf("请输入车牌号<例如:苏A8888> : ");

scanf("%s",wait->rear->data.num);

printf("该车停在便道上等待\n");

return OK;

}

}

(5)插入新的链表尾

void EnQueue(LinkQueueCar *wait) /*插入新的队尾*/

{

QueueNode *p=wait->rear;

wait->rear=(QueueNode *)malloc(sizeof(QueueNode));

if(!wait->rear) exit(OVERFLOW);

p->next=wait->rear;

wait->rear->next=NULL;

}

(6)车辆离开,登记离开时间,输出停车时间和收费。将便道内车辆

int Leave(SeqStackCar *enter,SeqStackCar *temp,LinkQueueCar *wait,LinkQueueCar *leavecar)

{

int i,j=enter->top;

QueueNode *q=NULL;

if(!enter->top) //若停车场内没有车则返回

{

printf("停车场内没有车");

return ERROR;

}

printf("请输入车在停车场中的位序(1-%d): ",j);

scanf("%d",&i);

while(i<1||i>enter->top)

{

printf("输入错误,请重新输入(1-%d): ",j);

scanf("%d",&i);

}

while(temp->top +istack[(temp->top)++]=enter->stack[--(enter->top)];

fee(enter,leavecar);

while(temp->top) //将临时存放的车再停回停车场

enter->stack[(enter->top)++]=temp->stack[--(temp->top)];

if(wait->head!=wait->rear) //将便道里的一辆车停入停车场

{

q=wait->head->next;

printf("便道里的%s车进入停车场第%d个位置\n",q->data.num,MAX);

enter->stack[(enter->top)++]=q->data;

printf("请输入现在时间<例如:12:00> : ");

scanf("%d:%d",&(enter->stack[enter->top-1].reach.hour),&(enter->stack[enter->top-1].reach.mi n));

wait->head->next=q->next;

if(!q->next) wait->rear=wait->head;

free(q);

}

return OK;

}

(7)计算收费,将离开车辆的信息登记入历史记录

void fee(SeqStackCar *enter,LinkQueueCar *leavecar) /*车费计算以及登记历史记录*/

{

EnQueue(leavecar);

--(enter->top);

printf("请输入离开时间<例如:12:00> : ");

scanf("%d:%d",&(enter->stack[enter->top].leave.hour),&(enter->stack[enter->top].leave.m in));

enter->stack[enter->top].time=(enter->stack[enter->top].leave.hour - enter->stack[enter->top].reach.hour)*60;

enter->stack[enter->top].time+=enter->stack[enter->top].leave.min - enter->stack[enter->top].reach.min;

printf(" <车牌号:%s 停车时间:%d分钟停车费:%6.2f >\n",enter->stack[enter->top].num,enter->stack[enter->top].time,enter->stack[enter->top].time*price);

leavecar->rear->data=enter->stack[enter->top];//将离开的车的信息存在历史记录里

}

(8)显示存车信息,输出历史记录

int List(SeqStackCar *enter,LinkQueueCar *wait,LinkQueueCar *leavecar) /*显示存车信息*/

{

int i,j;

QueueNode *q=wait->head,*p=leavecar->head;

while(1)

{

printf("******************************************\n");

printf("1.停车场 2.便道 3.历史记录 4.返回\n");

printf("******************************************\n");

scanf("%d",&i);

switch(i)

{

case 1:{printf(" 位置到达时间车牌号\n");

for(j=0;jtop;j++)

printf("%8d%8d:%2d %s\n",j+1,enter->stack[j].reach.hour,enter->stack[j].reach.min, enter->stack[j].num); break;}

case 2:{if(wait->head==wait->rear)printf("便道里没有车\n");

else

{ printf("便道内等待车辆车牌号:\n");

while(q=q->next)

printf("%s ",q->data.num);

printf("\n");

}break;}

case 3:{printf(" 车牌号到达时间离开时间停车时间费用\n");

while(p=p->next)

printf("%8s%8d:%2d%8d:%2d%10d%8.2f\n",p->data.num,p->data.reach.hour,p->data.reach.min, p->data.le ave.hour,p->data.leave.min,p->data.time,p->data.time*price);

break;}

case 4:return OK;

}}}

2.画出函数的调用关系图

主函数调用InitStack(),InitQueue(),Arrival(),Leave(),List()函数。

Arrival()函数调用EnQueue()函数。

Leave()函数调用fee()函数。

三、调试分析

1.调试中遇到的问题及对问题的解决方法

序号错误信息解决方法

1 选择功能1出现“请输入车牌”后出现应用程序错误初始化栈错误,不要再申请动态内存,只有赋初始值即可

2 选择功能1出现“请输入车牌”后出现应用程序错误数据应用错误,将栈的结构体类型CarNode *stack[MAX+1]

修改为CarNode stack[MAX+1]

3 选择功能1,输入到达时间出现应用程序错误数据应用错误,将栈的结构体类型CarNode data;修改为

CarNode data;

4 输出车费时小数点后又太多位将输出函数里 %f 改为%6.2f

5 从便道转移到停车场的车,离开后费用是乱码忘记登记进入停车场的时间

6 当停车场只有一辆车,让其离开时,输出费用是乱

码将车停放在临时车站的判断条件错误,while(temp->top +itop +itop 刚进入该调用函数的值

7 让便道车辆进入停车场第多少个位置输出有无推理可知总是第MAX个位置

8 当停车场内没有车时程序进入死循环加一个判断,if(!enter->top) return ERROR;

9 输出停车场信息是,停车位置错误将停车位置加1即可

10 车辆在便道里的位置输出错误不输出位置信息

2.算法的时间复杂度

序号函数功能函数名称时间复杂度

1 主函数void main()

2 初始化栈void InitStack(SeqStackCar *carstack) O(1)

3 初始化便道int InitQueue(LinkQueueCar *carwait O(1)

4 车辆到达,登记车牌号和到达

时间Arrival(SeqStackCar *enter,LinkQueueCar

*wait)

O(1)

5 插入新的链表尾void EnQueue(LinkQueueCar *wait) O(1)

6 车辆离开,登记离开时间,输

出停车时间和收费。将便道内

车辆int Leave(SeqStackCar *enter,SeqStackCar *temp,LinkQueueCar *wait,LinkQueueCar

*leavecar)

7 计算收费,将离开车辆的信息

记入历史记录void fee(SeqStackCar *enter,LinkQueueCar

*leavecar)

O(1)

8 显示存车信息,输出历史记录int List(SeqStackCar *enter,LinkQueueCar

*wait,LinkQueueCar *leavecar)

四、使用说明及测试结果

1. 使用说明:

○1输出菜单“1.车辆达到 2.车辆离开 3.列表显示 4.退出系统”。

○2先选择1,输入车牌号,输出车在停车场的位置,再输入到达时间。

○3随意选择1,2,3,4。若选1,停车场满后停在便道上,输入车牌号。

○4选择2,输入要离开的车辆在停车场的位置和离开时间。输出停车时间和费用。若便道上车,

将一辆车移到停车场,输入现在时间。

○5选择3,输出菜单“1.停车场 2.便道 3.历史记录 4.返回”。选择1,2,3,分别显示停

车场,便道,历史记录的情况。选择4返回到开始菜单。

○6最后选择4结束程序。

2.测试结果

序号测试数据输出结果

1 停车场:车牌号苏A1111 到达时间12:20 离开时间

13:00

车牌号:苏A1111 停车时间:40分钟停车费:2.00

2 停车场:车牌号苏A1111 到达时间12:20 离开时间

13:00;车牌号苏A2222 到达时间13:00 离开时间

14:00

选择停车场内1号位离开,再选择停车场内2号位离开车牌号:苏A1111 停车时间:40分钟停车费:2.00 车牌号:苏A2222 停车时间:120分钟停车费:6.00

3 停车场:车牌号苏A1111 到达时间12:20 离开时间

13:00;车牌号苏A2222 到达时间13:00 离开时间

14:00

便道:车牌号苏A3333 到达时间12:30 离开时间

13:00;车牌号苏A4444 到达时间13:00 离开时间

15:00

选择停车场内2号位离开,再选择选择停车场内2号位

离开车牌号:苏A2222 停车时间:120分钟停车费:6.00 车牌号:苏A3333 停车时间:30分钟停车费:1.50

4 停车场:车牌号苏A1111 到达时间12:20 离开时间

13:00;车牌号苏A2222 到达时间13:00 离开时间

14:00

便道:车牌号苏A3333 到达时间12:30 离开时间

13:00;车牌号苏A4444 到达时间13:00 离开时间

15:00

输出停车场内和便道的停车情况停车场内

位置达到时间车牌号

1 12:20 苏A1111

2 13:00 苏A2222 便道内等待车辆车牌号

苏A3333 苏A4444

5 停车场:车牌号苏A1111 到达时间12:20 离开时间

13:00;车牌号苏A2222 到达时间13:00 离开时间

14:00

便道:车牌号苏A3333 到达时间12:30 离开时间

13:00;车牌号苏A4444 到达时间13:00 离开时间

15:00

让苏A1111和苏A2222离开后,再输出停车场内和便道

的停车情况,以及历史记录

停车场内

位置达到时间车牌号

1 12:30 苏A3333

2 13:00 苏A4444

便道内没有车辆

历史记录

车牌号到达时间离开时间停车时间费用苏A1111 12:20 13:00 40 2.00 苏A2222 13:00 14:00 60 3.00

6 选择4退出系统成功退出程序

数据结构c语言版课程设计停车场管理系统汇编

课程设计:停车场 c语言版本的数据结构课程设计,要求用栈模拟停车场,用队列模拟便道,实现停车场的收费管理系统

停车场停满车后车会停在便道上面 下面附上源码,vc:(下编译 #include //#include //malloc #include //获取系统时间所用函数#include //getch() #include //设置光标信息mallco #define MaxSize 5 /*定义停车场栈长度*/ #define PRICE 0.05 /*每车每分钟收费值*/ #define BASEPRICE 0.5 //基础停车费

#define Esc 27 //退出系统 #define Exit 3 //结束对话 #define Stop 1 //停车 #define Drive 2 //取车 int jx=0,jy=32; //全局变量日志打印位置 typedef struct {int hour; int minute; }Time,*PTime; /*时间结点*/ typedef struct /*定义栈元素的类型即车辆信息结点*/ {int num ; /*车牌号*/ Time arrtime; /*到达时刻或离区时刻*/ }CarNode; typedef struct /*定义栈,模拟停车场*/ {CarNode stack[MaxSize]; int top; }SqStackCar; typedef struct node /*定义队列结点的类型*/ {int num; /*车牌号*/ struct node *next; }QueueNode; typedef struct /*定义队列,模拟便道*/ {QueueNode *front,*rear; }LinkQueueCar; /*函数声明*/ PTime get_time(); CarNode getcarInfo(); void qingping(int a); void gotoxy(int x,int y); void printlog(Time t,int n,int io,char ab,int po,double f); void printstop(int a,int num,int x0,int y0); void printleave(int a,int po,int num); /*初始化栈*/ void InitSeqStack(SqStackCar *s) { s->top=-1; } /* push入站函数*/ int push(SqStackCar *s,CarNode x) //数据元素x入指针s所指的栈{ if(s->top==MaxSize-1) return(0); //如果栈满,返回0 else

数据结构实验答案1

重庆文理学院软件工程学院实验报告册 专业:_____软件工程__ _ 班级:_____软件工程2班__ _ 学号:_____201258014054 ___ 姓名:_____周贵宇___________ 课程名称:___ 数据结构 _ 指导教师:_____胡章平__________ 2013年 06 月 25 日

实验序号 1 实验名称实验一线性表基本操作实验地点S-C1303 实验日期2013年04月22日 实验内容1.编程实现在顺序存储的有序表中插入一个元素(数据类型为整型)。 2.编程实现把顺序表中从i个元素开始的k个元素删除(数据类型为整型)。 3.编程序实现将单链表的数据逆置,即将原表的数据(a1,a2….an)变成 (an,…..a2,a1)。(单链表的数据域数据类型为一结构体,包括学生的部分信息:学号,姓名,年龄) 实验过程及步骤1. #include #include #include #define OK 1 #define ERROR 0 #define TRUE 1 #define FALSE 0 #define ElemType int #define MAXSIZE 100 /*此处的宏定义常量表示线性表可能达到的最大长度*/ typedef struct

{ ElemType elem[MAXSIZE]; /*线性表占用的数组空间*/ int last; /*记录线性表中最后一个元素在数组elem[ ]中的位置(下标值),空表置为-1*/ }SeqList; #include "common.h" #include "seqlist.h" void px(SeqList *A,int j); void main() { SeqList *l; int p,q,r; int i; l=(SeqList*)malloc(sizeof(SeqList)); printf("请输入线性表的长度:"); scanf("%d",&r); l->last = r-1; printf("请输入线性表的各元素值:\n"); for(i=0; i<=l->last; i++) { scanf("%d",&l->elem[i]); } px(l,i); printf("请输入要插入的值:\n");

C语言程序设计实验报告(实验大纲+过程)之欧阳家百创编

《C程序设计》实验教学大纲 欧阳家百(2021.03.07) 一、适用范围 大纲适用信息管理专业本科教学使用。 二、课程名称 C程序设计 三、学时数与学分 总学时:90 总学分: 4 实验学时:28 实验学分:1 四、教学目的和基本要求 目的:通过C程序设计实验,培养学生对学习程序设计的兴趣,加深对讲授内容的理解,尤其是通过上机来掌握语法规则,使学生全面了解C 语言的特点,熟练掌握C 语言程序设计的基本方法和编程技巧。 基本要求:了解和熟悉C语言程序开发的环境;学会上机调试程序,善于发现程序中的错误,并且能很快地排除这些错误,使程序能正确运行,达到实验知识和理论知识的融会贯通。上机实验前,学生必须事先根据题目的内容编好程序,然后在实验时输入程序、调试程序、直至运行结果正确为止,上机结束后,应整理出实验报告。 五、实验项目与学时分配

注:带*的实验项目为选做实验项目 六、教材、讲义及参考书 《C程序设计题解与上机指导》谭浩强主编清华大学出版社 七、实验成绩评定办法 实验成绩=平时实验表现+实验报告。实验成绩占总成绩的20%。 实验成绩以等级形式给出,评定等级分优、良、中、及格、不及格五类。 1、平时考核:上机实验前,学生必须事先根据题目的内容编好程序,然后在实验时输入程序、调试程序、直至运行结果正确为止。在实验中,教师可根据学生编程操作能力、观察和分析及运用知识能力、程序编制正确性以及学生的课堂纪律、实验态度、保持实验室卫生等方面的表现进行综合考核。 2、实验报告:学生实验后应按时完成实验报告。 八、实验教学大纲说明 本大纲共安排28学时的实验,其中带*号实验项目为选做实验项目,实际课时为18学时。实验项目多为设计性实验项目,每

停车场管理系统—C语言课程设计.doc

停车场管理系统 1题目要求 设有一个可以停放n 辆汽车的狭长停车场,它只有一个大门可以供车辆进出。车辆按到达停车场时间的早晚依次从停车场最里面向大门口处停放(最先到达的第一辆车放在停车场的最里面)。如果停车场已放满n 辆车,则后来的车辆只能在停车场大门外的便道上等待,一旦停车场内有车开走,则排在便道上的第一辆车就进入停车站。停车站内如有某辆车要开走,在它之后进入停车场的车都必须先退出停车站为它让路,待其开出停车场后,这些车辆再依原来的次序进场。每辆车在离开停车场时,都应根据它在停车场内停留的时间长短交费。如果停留在便道上的车未进停车场就要离去,允许其离去,不收停车费,并且仍然保持在便道上等待的车辆的次序。编制一程序模拟该停车场的管理。 【基本要求】要求程序输出每辆车到达后的停车位置(停车场或便道上),以及某辆车离开停车场是的停车时间及它应该交的费用。 2需求分析 根据题目要求,因为停车场是一个单条的序列,可以用结构体实现;在程序中,需要知道每辆来车的具体停放位置,应提供提示、查找、标记工作。车辆离开要计时计费。另外,每天开始时,停车场要初始化。 3总体设计 这个系统可以分为:初始化、有车进入、有车离开、退出四个模块。 4详细设计 main()函数体内包含了界面选则部分menu(),并单独 抽出来作为一个独立函数,目的在于系统执行每部分 模块后能够方便返回到系统界面。即main()函数写为 如下: void main()/*主函数*/ { menu();/*菜单函数*/ } 菜单函数: void menu() { int n,w; do { puts("\t\t**************MENU**************\n\n"); puts("\t\t\t 1.初始化"); puts("\t\t\t 2.有车进入"); puts("\t\t\t 3.有车离开"); puts("\t\t\t 4.退出"); puts("\n\n\t\t*********************************\n"); printf("Please choice your number(1-4): [ ]\b\b"); scanf("%d",&n); if(n<1||n>4) /*对选择的数字作判断*/ { w=1; getchar(); } else w=0; }while(w==1); switch(n) { case 1:chushi();break; /*初始化函数*/ case 2:jinru();break; /*车辆进入函数*/

《数据结构》实验报告

苏州科技学院 数据结构(C语言版) 实验报告 专业班级测绘1011 学号10201151 姓名XX 实习地点C1 机房 指导教师史守正

目录 封面 (1) 目录 (2) 实验一线性表 (3) 一、程序设计的基本思想,原理和算法描述 (3) 二、源程序及注释(打包上传) (3) 三、运行输出结果 (4) 四、调试和运行程序过程中产生的问题及采取的措施 (6) 五、对算法的程序的讨论、分析,改进设想,其它经验教训 (6) 实验二栈和队列 (7) 一、程序设计的基本思想,原理和算法描述 (8) 二、源程序及注释(打包上传) (8) 三、运行输出结果 (8) 四、调试和运行程序过程中产生的问题及采取的措施 (10) 五、对算法的程序的讨论、分析,改进设想,其它经验教训 (10) 实验三树和二叉树 (11) 一、程序设计的基本思想,原理和算法描述 (11) 二、源程序及注释(打包上传) (12) 三、运行输出结果 (12) 四、调试和运行程序过程中产生的问题及采取的措施 (12) 五、对算法的程序的讨论、分析,改进设想,其它经验教训 (12) 实验四图 (13) 一、程序设计的基本思想,原理和算法描述 (13) 二、源程序及注释(打包上传) (14) 三、运行输出结果 (14) 四、调试和运行程序过程中产生的问题及采取的措施 (15) 五、对算法的程序的讨论、分析,改进设想,其它经验教训 (16) 实验五查找 (17) 一、程序设计的基本思想,原理和算法描述 (17)

二、源程序及注释(打包上传) (18) 三、运行输出结果 (18) 四、调试和运行程序过程中产生的问题及采取的措施 (19) 五、对算法的程序的讨论、分析,改进设想,其它经验教训 (19) 实验六排序 (20) 一、程序设计的基本思想,原理和算法描述 (20) 二、源程序及注释(打包上传) (21) 三、运行输出结果 (21) 四、调试和运行程序过程中产生的问题及采取的措施 (24) 五、对算法的程序的讨论、分析,改进设想,其它经验教训 (24) 实验一线性表 一、程序设计的基本思想,原理和算法描述: 程序的主要分为自定义函数、主函数。自定义函数有 InitList_Sq、Out_List、ListInsert_Sq、ListDelete_Sq、LocateElem_Sq 、compare。主函数在运行中调用上述的自定义函数,每个自定义函数实现程序的每部分的小功能。 1.程序设计基本思想 用c语言编译程序,利用顺序存储方式实现下列功能:根据键盘输入数据建立一个线性表,并输出该线性表;然后根据屏幕菜单的选择,可以进行数据的插入、删除、查找,并在插入或删除数据后,再输出线性表;最后在屏幕菜单中选择结束按钮,即可结束程序的运行。 2.原理 线性表通过顺序表现,链式表示,一元多项式表示,其中链式表示又分为静态链表,双向链表,循环链表等,在不同的情况下各不相同,他可以是一个数字,也可以是一个符号,通过符号或数字来实现程序的运行。 3.算法描述

C语言实验报告

《C语言程序设计实训1》报告 设计题目:基于数组的学生信息管理系统学院名称:信息科学技术学院

专业:计算机科学与技术 班级: 姓名:学号 指导教师: 提交日期: 2014年12月22日 一、实验内容 编写并调试程序,实现学校各专业班级学生信息的管理。10个学生的信息存储在文件中。在头文件中定义学生信息的结构体类型,包括: 学号、姓名、专业、班级、3门成绩;和符号常量N(学生数)。(同一班 级的学生可以属于不同的专业,同一专业的学生可以属于不同的班级)

二、实验要求 (1)main函数:以菜单形式将各项功能提供给用户,根据用户的选择, 调用相应的函数。 STU student[N]; 函数 #include "" void main() { int i,n,id,num,m,sub,corse;将从文件中读取10个人的信\n"); printf("\n2.您将从文件中随机读取第n(0<=n<=9)个学生的信息\n") printf("\n3.您将根据某一班级某一专业总分超过多少进行查找\n"); printf("\n4.您将求某一课程分数最高的学生序号的下标\n"); printf("\n5.您将对平均成绩由低到高进行简单选择排序法\n ");

printf("\n6.您将对某一个班的平均成绩由低到高进行起泡排序法\n"); printf("\n7.您将对某门专业的学生的某门课程成绩由低到高进行直接插入排序法\n"); printf("\n8.您将把学生信息存入文件\n"); scanf("%d",&id); getchar(); switch(id){ case 1: { printf("\n从文件中读取信息\n"); Input(students,sizeof(students)/sizeof(STU));Sort_select 函数 #include "" void Sort_select(STU * p) { int i,j,k; float sum,ave[N],t; STU tem; for(i=0;i

C语言结构体实验报告

《高级语言程序设计》实验报告实验序号:8 实验项目名称:结构体

附源程序清单: 1. #include struct student { int num; char name[20]; char classname[20]; float score[3]; float aver_score; }stu[5]; void input() { int i; for(i=1;i<6;i++) { printf("第%d个同学",i); printf("请输入学号名字班级三门课程成绩:\n"); scanf("%d %s %s %f %f %f",&stu[i].num,stu[i].name,stu[i].classname,&stu[i].score[1],&stu [i].score[2],&stu[i].score[3]); } }; void averagescore() {

for(i=1;i<=5;i++) stu[i].aver_score=((stu[i].score[1]+stu[i].score[2]+stu[i].score[3])/3); printf("平均成绩:"); for(i=1;i<6;i++) printf("第%d个同学的平均成绩%f:\n",i,stu[i].aver_score); printf("\n"); }; void max() { int i,k=0; float temp=stu[1].aver_score; for(i=2;i<=5;i++) if(stu[i].aver_score>temp) {temp=stu[i] .aver_score;k=i;}; printf("成绩最好的同学:\n"); printf("%d %s %s %4.2f %4.2f %4.2f %4.2f\n", stu[k].num,stu[k].name,stu[k].classname,stu[k].score[1],stu[k].score[2],stu[k].score[3],stu[k].aver _score); }; void main() { input(); averagescore(); max(); } 2.#include struct worker { char name[20]; int workyear; float salary; }work[5]; void input() { int i; for(i=1;i<=5;i++) { printf("第%d个工人:",i); printf("请输入名字工作年限工资总额:\n"); scanf("%s %d %f",&work[i].name,&work[i].workyear,&work[i].salary);

数据结构实验报告(2015级)及答案

数据结构实验报告(2015级)及答案

《数据结构》实验报告 专业__信息管理学院______ 年级__2015级___________ 学号___ _______ 学生姓名___ _ _______ 指导老师____________ 华中师范大学信息管理系编

I 实验要求 1.每次实验中有若干习题,每个学生至少应该完成其中的两道习题。 2.上机之前应作好充分的准备工作,预先编好程序,经过人工检查无误后,才能上机,以提高上机效率。 3.独立上机输入和调试自己所编的程序,切忌抄袭、拷贝他人程序。 4.上机结束后,应整理出实验报告。书写实验报告时,重点放在调试过程和小节部分,总结出本次实验中的得与失,以达到巩固课堂学习、提高动手能力的目的。 II 实验内容 实验一线性表 【实验目的】 1.熟悉VC环境,学习如何使用C语言实现线性表的两种存储结构。 2.通过编程、上机调试,进一步理解线性表的基本概念,熟练运用C语言实现线性表基本操作。 3.熟练掌握线性表的综合应用问题。 【实验内容】 1.一个线性表有n个元素(n

的顺序不变。设计程序实现。要求:采用顺序存储表示实现;采用链式存储表示方法实现;比较两种方法的优劣。 2. 从单链表中删除指定的元素x,若x在单链表中不存在,给出提示信息。 要求: ①指定的值x由键盘输入; ②程序能处理空链表的情况。 3.设有头结点的单链表,编程对表中的任意值只保留一个结点,删除其余值相同的结点。 要求: ①该算法用函数(非主函数)实现; ②在主函数中调用创建链表的函数创建一个单链表, 并调用该函数,验证算法的正确性。 LinkedList Exchange(LinkedList HEAD,p)∥HEAD是单链表头结点的指针,p是链表中的一个结点。本算法将p所指结点与其后 继结点交换。 {q=head->next;∥q是工作指针,指向链表中当前待处理结点。 pre=head;∥pre是前驱结点指针,指向q的前驱。 while(q!=null && q!=p){pre=q;q=q->next;} ∥

C语言实验八结构体上机报告

《标准C语言程序设计》上机报告实验八结构体程序设计 专业:电子信息工程 班级:电信1301 学号:U201313480 姓名:秦行 完成日期:2014/6/9

一、实验目的: 1、掌握结构体类型的说明和结构体变量的定义; 2、掌握结构体变量成员的引用和对结构体变量的初始化; 3、掌握结构体数组及结构体指针变量的定义及使用。 4、理解并掌握结构体在函数间的传递; 5、进一步掌握复杂程序编译、连接和调试的技巧。 二、实验内容及要求(鼓励一题多解) ——以下均要求不得使用全局变量: 1 (1)、正确定义该表格内容要求的数据类型; (2)、分别输入各成员项数据,并打印输出(为简便起见,假设只有3名考生)。#include #include #define N 3 struct date { int year; int month; int day; }; struct student { unsigned int num; char name[20]; char sex; struct date birth; }; void main()

{ struct student tester[N]; int i; for(i=0;i #include #include #define N 10 struct worker { char name[20]; int salary; };

C语言课程设计报告停车场管理系统

停车场管理一 一.要求: 1.设计一个停车场用长度为N的堆栈来模拟。由于停车场内如有某辆车要开走,在它之后进来的车都必须先退出为它让道,待其开出停车场后,这些车再依原来的顺序进入。 2.程序输出每辆车到达后的停车位置,以及某辆车离开停车场时应交纳的费用和它在停车场内停留的时间。 二、程序中所采用的数据结构及存储结构的说明 以栈模拟停车场,以队列模拟车场外的便道,按照从终端读入的输入数据序列进行模拟管理。栈以顺序结构实现,队列以链表实现。 程序中分别采用了“栈”和“队列”作为其存储结构。 “栈”的定义可知,每一次入栈的元素都在原栈顶元素之上成为新的元素,每一次出栈的元素总是当前栈顶元素使次栈元素成为新的栈顶元素,即最后进栈者先出栈。程序中采用的结构是: typedef struct NODE{ CarNode *stack[MAX+1]; int top; }SeqStackCar; /*模拟车库*/ “队列”是限定所有插入操作只能在表的一端进行,而所有的删除操作都只能在表的另一端进行。插入端叫队尾,删除端叫对头。按先进先出规则进行。程序中采用的结构是:typedef struct Node{ QueueNode *head; QueueNode *rear; }LinkQueueCar; /*模拟通道*/ 三、算法的设计思想 由于停车场是一个狭窄通道,而且只有一个大门可供汽车进出,问题要求汽车停车

场内按车辆到达时间的先后顺序,依次由北向南排列。由此很容易联想到数据结构中的堆栈模型,因此可首先设计一个堆栈,以堆栈来模拟停车场,又每个汽车的车牌号都不一样,这样一来可以根据车牌号准确找到汽车位置,所以堆栈里的数据元素我设计成汽车的车牌号。当停车场内某辆车要离开时,在他之后进入的车辆必须先退出车场为它让路,待该辆车开出大门外,其他车辆再按原次序进入停车场。这是个一退一进的过程,而且让道的汽车必须保持原有的先后顺序,因此可再设计一个堆栈,以之来暂时存放为出站汽车暂时让道的汽车车牌号。当停车场满后,继续进来的汽车需要停放在停车场旁边的便道上等候,若停车场有汽车开走,则按排队的先后顺序依次进站,最先进入便道的汽车将会最先进入停车场,这完全是一个先进先出模型,因此可设计一个队列来模拟便道,队列中的数据元素仍然设计成汽车的车牌号。另外,停车场根据汽车在停车场内停放的总时长来收费的,在便道上的时间不计费,因此必须记录车辆进入停车场时的时间,车辆离开停车场时的时间不需要记录,当从终端输入时可直接使用。由于时间不象汽车一样需要让道,我设计了一个顺序表来存放时间。又用顺序表用派生法设计了一个堆栈,恰好满足上面模拟停车场的需要。 四.设计原理、框图

数据结构实验报告-答案

数据结构(C语言版) 实验报告

专业班级学号姓名 实验1 实验题目:单链表的插入和删除 实验目的: 了解和掌握线性表的逻辑结构和链式存储结构,掌握单链表的基本算法及相关的时间性能分析。 实验要求: 建立一个数据域定义为字符串的单链表,在链表中不允许有重复的字符串;根据输入的字符串,先找到相应的结点,后删除之。 实验主要步骤: 1、分析、理解给出的示例程序。 2、调试程序,并设计输入数据(如:bat,cat,eat,fat,hat,jat,lat,mat,#),测 试程序的如下功能:不允许重复字符串的插入;根据输入的字符串,找到相应的结点并删除。 3、修改程序: (1)增加插入结点的功能。 (2)将建立链表的方法改为头插入法。 程序代码: #include"" #include"" #include"" #include"" typedef struct node . . 示意图:

head head head 心得体会: 本次实验使我们对链表的实质了解更加明确了,对链表的一些基本操作也更加熟练了。另外实验指导书上给出的代码是有一些问题的,这使我们认识到实验过程中不能想当然的直接编译执行,应当在阅读并完全理解代码的基础上再执行,这才是实验的意义所在。

实验2 实验题目:二叉树操作设计和实现 实验目的: 掌握二叉树的定义、性质及存储方式,各种遍历算法。 实验要求: 采用二叉树链表作为存储结构,完成二叉树的建立,先序、中序和后序以及按层次遍历 的操作,求所有叶子及结点总数的操作。 实验主要步骤: 1、分析、理解程序。 2、调试程序,设计一棵二叉树,输入完全二叉树的先序序列,用#代表虚结点(空指针), 如ABD###CE##F##,建立二叉树,求出先序、中序和后序以及按层次遍历序列,求 所有叶子及结点总数。 实验代码 #include"" #include"" #include"" #define Max 20 ertex=a; irstedge=NULL; irstedge; G->adjlist[i].firstedge=s; irstedge; R[i] 留在原位

C语言实验报告《综合实验》

C语言实验报告《综合实验》C语言的实验报告,可以参考一下哈,学财务的童鞋快过来!小编为你推荐。 学号:__ 姓名:__ 班级:__ 日期:__ 指导教师:__ 成绩:__ 实验** 综合实验 1、掌握C语言中的变量、数组、函数、指针、结构体等主要知识点。 2、掌握C程序的结构化程序设计方法,能使用C语言开发简单的应用程序。 编写一个学生信息排序程序。要求: 1、程序运行时可输入n个学生的信息和成绩(n预先定义)。 2、学生信息包括:学号、英文姓名、年龄;学生成绩包括:语文、数学、计算机。 3、给出一个排序选择列表,能够按照上述所列信息(学号、姓名、年龄、语文、数学、计算机)中的至少一个字段进行排序,并显示其结果。 1、使用函数方法定义各个模块。 20**年C语言实验报告《****》 课程名称:会计实务综合实验 院系名称:经济管理管理

专业班级:会计09- 学生姓名: 学号: 20**年C语言实验报告《***》XX年C语言实验报告《***》指导教师:李*** ****工程学院教务处制 实验项目 会计实务综合实验 实验日期 在这一次的操作中,加深对会计理论知识的理解和掌握,通过对会计业务的运用和基本技能的训练,将专业理论和会计实务紧密结合。本实验的操作,也是对学生所学专业知识掌握程度及运用能力的一次综合考查,为他们以后从事的会计工作打下扎实的基础。 1、实验模拟教材 2、计算器 3、钢笔、直尺 根据本学期所学的中级会计实务的内容,解决我们实习中老师布置的问题,本学期所学的重点主要是投资性房地产、非货币性资产交换、借款费用、债务重组、或有事项、所得税的计算、会计政策、会计估计变更和差错更正以及资产负债表日后事项的调整。把每一个业务题都当作一个真实的业

C语言实验报告参考答案

《C语言程序设计》 实 验 手 册

《C语言程序设计》实验课程简介 课程名称:C语言程序设计实验 课程性质:专业必修课 课程属性:专业必修课 学时学分:学时32 学分1 开课实验室:软件实验室 面向专业:网络工程、软件工程、计算机科学与技术 一、课程的任务和基本要求 C语言程序设计实验是面向计算机相关专业学生开设的《C语言程序设计》实验课,是配合《C语言程序设计》课程而开设的实验性教育环节。本课程的主要任务是让学生充分掌握C 语言程序设计的基本概念、各种数据类型的使用技巧、模块化程序设计的方法等。C语言程序设计实验对课程中所涉及的知识进行验证,同时也是学生很好地学习课程的辅助手段。通过C语言上机实验的教学活动,使学生真正全面掌握C语言的基础知识,培养和提高学生的程序开发能力。 二、实验项目 【实验一】最简单的C程序---顺序程序设计 【实验二】逻辑运算和判断选取控制 【实验三】循环结构程序设计(一) 【实验四】循环结构程序设计(二) 【实验五】函数 【实验六】数组(一) 【实验七】数组(二) 【实验八】指针 【实验九】结构体、共用体和文件 【实验十】C程序综合性实验 三、有关说明 1、与其它课程和教学环节的联系: 先修课程:计算机文化 后续课程:面向对象程序设计、Java程序设计、数据结构、软件工程 2、教材和主要参考书目: (1)教材: 《C程序设计习题解答与上机指导》,谭浩强吴伟民著,北京:清华大学出版社,2003年。(2)主要参考书目: 《C语言程序设计》谭浩强主编,清华大学出版社,2003年。

三、实验内容 实验一最简单的C程序---顺序程序设计 (验证性实验 2学时) (一)、实验目的 1.熟悉win-tc程序运行环境 2.掌握运行一个C程序的步骤,理解并学会C程序的编辑、编译、链接方法 3.掌握C语言中使用最多的一种语句——赋值语句 4.掌握数据的输入输出方法,能正确使用各种格式控制符 (二)、实验内容 1.写出下列程序的运行结果 (1)#include void main() { printf(“*****************\n”); printf(“This is a c program. \n”); printf(“****************\n”); } 运行结果及分析:运行结果为: Printf函数语句表示输出引号内的字符串,最后的\n表示换行, 将程序中的\n去掉后,运行结果及分析:运行结果为: 去掉\n后不换行连续显示 (2)#include void main() { int a=100,b=20,sum,sb; sum=a+b; sb=a/b; printf("sum=%d,sb=%d",sum,sb); } 运行结果及分析: sum=100+20=120;sb=100/20=5. (3)#include void main( )

数据结构实验报告-答案.doc

数据结构实验报告-答案 数据结构(C语言版)实验报告专业班级学号姓名实验1实验题目:单链表的插入和删除实验目的:了解和掌握线性表的逻辑结构和链式存储结构,掌握单链表的基本算法及相关的时间性能分析。 实验要求:建立一个数据域定义为字符串的单链表,在链表中不允许有重复的字符串;根据输入的字符串,先找到相应的结点,后删除之。 实验主要步骤:1、分析、理解给出的示例程序。 2、调试程序,并设计输入数据(如:bat,cat,eat,fat,hat,jat,lat,mat,#),测试程序的如下功能:不允许重复字符串的插入;根据输入的字符串,找到相应的结点并删除。 3、修改程序:(1)增加插入结点的功能。 (2)将建立链表的方法改为头插入法。 程序代码:#include“stdio.h“#include“string.h“#include“stdlib.h“#include“ctype. h“typedefstructnode//定义结点{chardata[10];//结点的数据域为字符串structnode*next;//结点的指针域}ListNode;typedefListNode*LinkList;//自定义LinkList单链表类型LinkListCreatListR1();//函数,用尾插入法建立带头结点的单链表LinkListCreatList(void);//函数,用头插入法建立带头结点的单链表ListNode*LocateNode();//函数,按值查找结点voidDeleteList();//函数,删除指定值的结点voidprintlist();//函数,打印链表中的所有值voidDeleteAll();//函数,删除所有结点,释放内存

C语言实验报告参考源代码

实验5三种基本结构的综合应用 4.一个素数(设为p)依次从最高位去掉一位,二位,三位,……,若得到的各数仍都是素数(注:除1和它本身外,不能被其它整数整除的正整数称为素数,1不是素数,2是素数),且数p的各位数字均不为零,则称该数p为逆向超级素数。例如,617,17,7都是素数,因此617是逆向超级素数,尽管503,03,3都是素数,但它不是逆向超级素数,因为它包含有零。试求[100,999]之内的所有逆向超级素数的个数。 #include "stdio.h" main() {int i,j,k,m,p,q,n=0; for(i=100;i<=999;i++) {for(j=2;j=i) /*三位数是素数时*/ {k=i%100; /*去掉百位数字*/ if(k>=10) /*十位数字不是0时*/ {for(m=2;m=k) /*两位数是素数时*/ {p=i%10; /*p为个位数字*/ for(q=2;q=p)n++;}}}} printf("%d\n",n);} Key:57 5.求[2,400]中相差为10的相邻素数对的对数。 #include "stdio.h" main() {int i,j,k,m,p,q,n=0; for(i=2;i<=400;i++) {for(j=2;j=i) /*i是素数时*/ {for(k=i+1;k=k)break;} /*k是素数时终止if语句的外层循环*/ if(k>=i+10) /*[i+1,i+9]不是素数时*/ {for(q=2;q

c语言实验报告1

C语言程序设计报告 日

程序主要内容 任务1. 程序首先随机产生一到十之间的正整数,在屏幕上打印出问题,例如6*7=?然后让学生输入答案,序检查学生输入的答案是否正确,若正确,则“RIGHT”,然后问下一个问题,否则打印“WRONG,PLEASE TRY AGAIN”,然后提示学生重做,直到答对为止。 程序如下: #include #include #include int Magic(int x); int Answer(); main() { int guess,answer,counter=1; do{ printf("%d*%d=",Magic(1),Magic(2)); answer=Magic(1)*Magic(2); if(Answer()==answer) { printf("Right\n"); break; } else printf("Wrong!,please try again\n"); }while(counter>=1); } int Magic(int m)

int x,int y; srand(time(NULL)); x=rand()%10+1; y=rand()%10+1; if(m==1) return x; if(m==2) return y; } int Answer() { int n; scanf("%d",&n); return n; } 任务2:在(1)的基础上,当学生回答错误时,最多给三次重做的机会。 :程序如下: #include #include #include int Magic(int x); int Answer(); int Exam(); main() { int n; n=Exam(); if(n==0) printf("Right\n"); else if(n==1) printf("Wrong!You have tried

停车场管理系统-c语言

2015-2016学年第二学期《高级语言程序设计》 课程设计报告 题目:停车场管理系统 专业:计算机科学与技术 班级:15级计科<1>班 :胡玉玉 指导教师:广宏 成绩: 计算机学院 2016 年 4月 25 日

目录 1. 设计容及要求 (1) 1.1 课程设计容 (1) 1.2 课程设计的要求 (2) 2概要设计 (3) 2.1 设计思路 (3) 2.2 程序基本框架结构图 (4) 3设计过程或程序代码 (5) 3.1 主要程序代码及解释 (5) 4设计结果与分析 (13) 4.1 程序运行结果截图与分析 (13) 5参考文献 (16)

1.设计容及要求 1.1 课程设计容 ①通过本次课程设计,强化上级动手能力,在理论和实践的基础 上巩固《C语言程序设计》课程的学习容。掌握软件设计的基本方法。 ②熟悉C语言的基本容从而掌握C语言的基本知识以及了解C语 言的基本编写及运行。 ③了解程序的分模块编写并对程序的每个模块进行详细的设计并 且能理解一般C语言编写的程序。 ④掌握书写程序设计说明文档的能力。 ⑤熟悉C程序设计的开发环境及C程序的调试过程 1.2 课程设计的要求 ①分析课程设计题目的要求。 ②写出详细设计说明。 ③编写程序代码,调试程序使其能正确运行。 ④设计完成的软件要便于操作和使用。 ⑤设计完成后提交课程设计报告。

2.概要设计 2.1设计思路 停车场是一个可停放n辆汽车的狭长通道,并只有一个大门可供汽车进出,汽车在停车场按车辆到达的先后顺序,依次由北向南排列(大门在最南端,最先到达的第一辆车停放在车场的最北端),如车长已停满n辆汽车,则后来的汽车只能在门外的便道上等候,一旦有车开走,则排在便道上的第一辆车即可开入;当停车场某辆车要离开时,在它后进入的车辆必须先退出车场为它让路,待该辆车开出大门外,其它车辆再按原次序进入车场,每辆停放在车场的车在它离开停车场时必须按它停留的时间长短交纳费用,以栈模拟停车场,以队列模拟车场外的便道,按照从终端读入的输入数据序列进行模拟管理.每一组输入数据包括三个数据项:汽车”到达”或”离去” 信息,汽车牌照以及到达或离去的时刻(到达或离去的时刻也可用计算机控制).对每一组输入数据进行操作后的输入信息为:如是车辆到达,则输入汽车在停车场。 2.2程序基本框架结构图

数据结构实验报告图实验

邻接矩阵的实现 1. 实验目的 (1)掌握图的逻辑结构 (2)掌握图的邻接矩阵的存储结构 (3)验证图的邻接矩阵存储及其遍历操作的实现2. 实验内容 (1)建立无向图的邻接矩阵存储 (2)进行深度优先遍历 (3)进行广度优先遍历3.设计与编码MGraph.h #ifndef MGraph_H #define MGraph_H const int MaxSize = 10; template class MGraph { public: MGraph(DataType a[], int n, int e); ~MGraph(){ void DFSTraverse(int v); void BFSTraverse(int v); private: DataType vertex[MaxSize]; int arc[MaxSize][MaxSize]; }

int vertexNum, arcNum; }; #endif MGraph.cpp #include using namespace std; #include "MGraph.h" extern int visited[MaxSize]; template MGraph::MGraph(DataType a[], int n, int e) { int i, j, k; vertexNum = n, arcNum = e; for(i = 0; i < vertexNum; i++) vertex[i] = a[i]; for(i = 0;i < vertexNum; i++) for(j = 0; j < vertexNum; j++) arc[i][j] = 0; for(k = 0; k < arcNum; k++) { cout << "Please enter two vertexs number of edge: " cin >> i >> j; arc[i][j] = 1; arc[j][i] = 1; } }

相关文档
相关文档 最新文档