首页 考试资料幻灯片工程技术公务员考试小学教学中学教学大学教学外语资料
数据结构实验书


if(!Q.base) exit(OVERFLOW);//存储分配失败 Q.front=Q.rear=0; return } Status QueueEmpty(SqQueue Q){ OK;

//若队列 Q 为空队列,则返回 TRUE,否则返回 FALSE if(Q.front﹦﹦Q.rear) return else } int QueueLength(SqQueue Q){ return FALSE; TRUE;

//返回 Q 的元素个数,即为队列的长度 return(Q.rear-Q.front+MaxQsize)% } Status GetHead(SqQueue Q,QelemType &e){ MaxQsize;

//若队列不为空,则用 e 返回 Q 的队头元素,并返回 OK;否则返回 ERROR if(Q.front==Q.rear) return ERROR; e=Q.base[Q.front]; return } Status EnQueue(SqQueue &Q,QelemType e){ OK;

//插入元素 e 为 Q 的新的队尾元素 if((Q.rear+1)%MaxQsize==Q.front) Q.base[Q.rear]=e; Q.rear=(Q.rear+1)%MaxQsize; return } Status DeQueue(SqQueue &Q,QelemType &e){ OK; return ERROR;//队列满

//若队列不空,则删除 Q 的队头元素,用 e 返回其值,并返回 OK,否则返回 ERROR

if(Q.rear==Q.front) e=Q.base[Q.front];

return ERROR;//队列空

Q.front=(Q.front+1)%MaxQsize; return } 【C 源程序】 #include #include typedef <stdio.h> <stdlib.h> int QElemType; Status; 1 OK;

typedef int #define OK

#define TRUE 1 #define FALSE #define ERROR 0 0

#define OVERFLOW -2 #define MaxQsize 100 typedef struct { QElemType *base; int front; int rear; }SqQueue; Status InitQueue(SqQueue *Q){ /*初始化的动态分配存储空间*/ /*头指针,若队列不空,指向队列头元素*/ /*最大队列长度*/

/*尾指针,若队列不空,指向队列尾元素的下一个位置*/

/*构造一个空队列 Q*/ (*Q).base=(QElemType if(!(*Q).base) *)malloc(MaxQsize*sizeof(QElemType));

return(OVERFLOW);/*存储分配失败*/

(*Q).front=(*Q).rear=0; return } Status QueueEmpty(SqQueue Q){ OK;

/*若队列 Q 为空队列,则返回 TRUE,否则返回 FALSE*/

if(Q.front==Q.rear) else } return FALSE;

return TRUE;

int QueueLength(SqQueue

Q){

/*返回 Q 的元素个数,即为队列的长度*/ return(Q.rear-Q.front+MaxQsize)% } Status GetHead(SqQueue Q,QElemType *e){ MaxQsize;

/*若队列不为空,则用 e 返回 Q 的队头元素,并返回 OK;否则返回 ERROR*/ if(Q.front==Q.rear) *e=Q.base[Q.front]; return } Status EnQueue(SqQueue *Q,QElemType e){ OK; return ERROR;

/*插入元素 e 为 Q 的新的队尾元素*/ if(((*Q).rear+1)%MaxQsize==(*Q).front) (*Q).base[(*Q).rear]=e; (*Q).rear=((*Q).rear+1)%MaxQsize; return } Status DeQueue(SqQueue *Q,QElemType *e){ OK; return ERROR;/*队列满*/

/*若队列不空,则删除 Q 的队头元素,用 e 返回其值,并返回 OK,否则返回 ERROR*/ if((*Q).rear==(*Q).front) *e=(*Q).base[(*Q).front]; (*Q).front=((*Q).front+1)%MaxQsize; return } main(){ SqQueue int Q; select; OK; return ERROR;/*队列空*/

QElemType if

e;

(InitQueue(&Q)==OVERFLOW) printf("分配失败,即将退出程序!");

else/*否则显示队列操作的菜单,并选择相应的基本操作*/ do { printf("1:判断队列是否为空n"); printf("2:测试队列的长度n" ); printf("3:取队头元素值n"); printf("4:向队列中插入一新元素n"); printf("5:删除队列中一元素n"); printf("0:结束n"); scanf("%d",&select); switch (select) case 1: if (QueueEmpty(Q)==TRUE) { printf("队列为空n"); else case 2: printf("队列不为空n");break;

printf("队列长度为:%dn",QueueLength(Q));break; printf("队列为空n"); else printf("队首元素为:%dn",e);break;

case 3: if(GetHead(Q,&e)==ERROR)

case 4: scanf("%d",&e); if(EnQueue(&Q,e)==ERROR) printf("队列满n");

else printf("元素成功插入n");break; case 5: if(DeQueue(&Q,&e)==ERROR) printf("队列空,无数据可删n");

else printf("删除元素为:%dn",e);break; case 0: printf("操作结束n");break; default:printf("输入选择出错!n"); }/*switch*/ }while }/*main_end*/ 【测试数据】 读者根据运行提示和显示的功能菜单实现循环队列的基本操作。 (select);

【说明】 此题是使用动态顺序存储方式来存放循环队列。特别注意循环队列中队空和队满的判断条件。 【实验题】 请用链式存储方式表示队列,并实现队列的基本操作。

第三节 计算表达式的值
【问题描述】 计算用运算符后缀法表示的表达式的值。后缀表达式也称逆波兰表达式,比中缀表达式计算起来更方便简 单些,中缀表达式要计算就存在着括号的匹配问题,所以在计算表达式值时一般都是先转换成后缀表达式, 再用后缀法计算表达式的值。 如: 表达式(a+b*c)/d-e 用后缀法表示应为 abc*+d/e-。 只考虑四则算术运算, 且假设输入的操作数均为 1 位十进制数(0—9),并且输入的后缀形式表达式不含语法错误。 【数据描述】 #define add 43 /*运算符加号‘+’的 ASCII 码*/ /*运算符减号‘-’的 ASCII 码*/

#define subs 45

#define mult 42 /*运算符乘号‘*’的 ASCII 码*/ #define div 47 /*运算符除号‘/’的 ASCII 码*/ 100

#define MAXSIZE typedef struct{ { int

stkdata[MAXSIZE];//用数组来表示栈空间,定义长度为 MAXSIZE 的栈 //栈顶指针

int top; }STKzone; typedef STKzone

*STK; bool;

typedef enum{true=1,false=0} typedef enum{ok,error}

status;

【算法描述】 用流程图表示见图 3-4。

【C 源程序】

#include<stdio.h> #define add 43 /*运算符加号‘+’的 ASCII 码*/ /*运算符减号‘-’的 ASCII 码*/ /*运算符乘号‘*’的 ASCII 码*/ /*运算符除号‘/’的 ASCII 码*/ 100

123456789101112131415161718192021222324252627282930

 


 

  【Top

最新搜索

 

数据结构实验指导书 - 数据结构 实验指导书 院别 专业 班级 姓名 计算机学院编 实验一 线性表的顺序存储实验 一、实验目的及要求 1、掌握在TC环境下调试顺序表...

数据结构与算法实验指导书90969 - 数据结构与算法实验指导书 计算机与信息学院 实验一 【实验目的】 顺序表 熟练掌握线性表在顺序存储结构上的基本操作。 【实验...

数据结构实验指导书02 很好!很好!隐藏&gt;&gt; 实验二 2.1 实验目的: 线性表 (1)掌握线性表的顺序存储结构的定义及 C 语言实现。 (2)掌握线性表在顺序存储结构即...

数据结构实验说明书新版 - the principl e of simplified E IA of constr uction pr oject s in the regi on. In te...

数据结构实验指导书 - 数据结构实验指导(C语言版)... 数据结构实验指导书_IT/计算机_专业资料。数据结构实验指导(C语言版) 数据结构实验指导书 江西农业大学计算机与...

数据结构试验指导书V2[1].0 - V 2.0 数据结构与算法 实验指导书 编写: 编写:陆绍飞 校核: 校核:___ 湖南大学软件学院 2011 年 9 月 湖南大学软件学...

数据结构实验指导书(2012.9) - 1.2 实验报告(文档)书写规范 实验报告(文档)应包括以下 7 个方面的内容: 1、问题分析 根据对实验任务的理解, 以无歧义的陈述...

09级《数据结构》实验指导书 - 《数据结构实验指导书》 潘向辉/吴学毅编写 印包学院数字媒体技术专业 2011 年 3 月 实验说明 实验说明 【实验环境】 操作系统:...

空间数据结构基础实验指导书 隐藏&gt;&gt; 《空间数据结构基础》 课程实习指导书实习周数:2 周 学分数:2 一、实习目的 数据结构是一门重要的专业基础课,其特点是理论...

《数据结构(C 语言版) 》实验指导书(非计算机专业适用) 广州大学 2013.1 目 录 实验一 线性表的顺序存储及其操作... 1 实验二 线性表的链式存储及其操作......


 

热点推荐