1、数据结构实验指导书实验二验 实验 2 堆栈与队列(2 学时)实验目的 1 定义顺序栈和链栈的结点类型。2 掌握栈的插入和删除结点在操作上的特点。3 熟悉对栈的一些基本操作和具体的函数定义。4 定义顺序队列和链队列的结点类型。实验内容 堆栈的操作 1该程序的功能是实现顺序栈的定义和操作。该程序包括定义的栈结构类型以及对每一种栈操作的具体的函数定义和主函数。/* 定义 DataType 为 int 类型 */ typedef int DataType;/* 栈的结点类型 */ #define MAXSIZE 1024typedef struct DataType dataMAXSIZE;int t
2、op;SeqStack;/* 初始化顺序栈 */ SeqStack SeqStackInit()/* 检查顺序栈是否为空 */ int SeqStackEmpty(SeqStack S)/* 把 S 置为空栈 */ void ClearStack(SeqStack *S)/* 把元素 x 压入栈,使其成为新的栈顶元素 */ void SeqStackPush(SeqStack *S,DataType x)/* 把栈顶元素弹出 */ DataType SeqStackPop(SeqStack *S)/* 取栈顶元素 */ DataType SeqStackGetTop(SeqStack S)/*
3、输出顺序栈中的元素*/ void SeqStackPrint(SeqStack S)2试利用堆栈将队列中的元素逆置。3编写括号匹配算法。* 队列 的操作 1.队列的基本操作:InitQueue(&Q)构造一个空队列 Q QueueEmpty(Q)判断队列是否为空 QueueLenght(Q)返回队列 Q 的元素个数,即队列的长度GetHead(Q,&e)取队列 Q 的队头元素,并用 e 返回 EnQueue(&Q,e)将元素 e 入队列 DeQueue(&Q,&e)删除非空队列 Q 的队头元素,并用 e 返回其值 2.队列的表示:队列有两种表示方法:链队列、循环队列(顺序队列)。链队列的表示:
4、typedef struct QNode QElemType data;struct QNode *next;QNode,*QueuePtr;typedef struct QueuePtr front;QueuePtr rear;LinkQueue;3编写一个程序,反映病人到医院看病排队看医生的情况,在病人排队过程中,主要重复两件事:(1)病人到达诊室,将病历交给护士,排到等待队列中侯诊(入队)(2)护士从等待队列中取出下一位病人的病历,改病人进入诊室就诊(删除头元素,出队)。要求:模拟病人等待就诊这一过程,程序采用菜单式,其选项和功能说明如下:(1)排队输入排队病人的病历号,加入到病人排队队
5、列中(2)就诊病人排队队列中最前面的病人就诊,将其从队列中删除(3)查看排队从队首到队尾理出所有的排队病人的病历号(输出)(4)不再排队,余下病人依次就诊从队首到队尾列出所有的排队病人的病历号,并退出运行(5)下班退出运行(6)上班初始化排队队列。关键代码 #define sqStackSize 15 typedef char dataType;typedef struct sqStack dataType datasqStackSize;int top;sqStackTp;char ch,chs,e,f=T;void InitStack(sqStackTp *sq)sq-top=-1; int StackEmpty(sqStackTp *sq)return sq-top=-1; int StackFull(sqStackTp *sq)return sq-top=s
《数据结构实验指导书实验二.doc》由会员分享,可在线阅读,更多相关《数据结构实验指导书实验二.doc(4页范文模板文档)》请在优智文库上查找。