数据结构实验报告(实验3,实验4) 联系客服

发布时间 : 星期日 文章数据结构实验报告(实验3,实验4)更新完毕开始阅读14c38f48178884868762caaedd3383c4ba4cb45d

*cp=stack[*toppt]; return 0; }

int correct(char *exp,int max) { int flag=0; char s[MAX]; int top=0; char c;int i; for(i=0;i<=max&&flag==0;i++) { if(exp[i]=='('||exp[i]=='['||exp=='{') push(s,MAX,&top,exp[i]); if(exp[i]==')'||exp[i]==']'||exp[i]=='}') { flag=pop(s,&top,&c); if((exp[i]==')'&&c!='(')||(exp[i]==']'&&c!='[')||(exp[i]=='}'&&c!='{')) flag=1; } } if(top!=0) flag=1; return flag; }

void main() { char exp[1024]; int top=0; while(1) { printf(\请输入表达式,输入0 结束程序:\\n\ gets(exp);exp[MAX]='\\0'; if(strcmp(exp,\ return; if(correct(exp,strlen(exp))!=0) printf(\表达式括号不匹配\\n\ else printf(\表达式括号匹配\\n\ } }

实验4 队列的基本操作

? 实验目的

(1)掌握链接存储队列的进队和出队等基本操作。 (2)掌握环形队列的进队和出队等基本操作。

(3)加深对队列结构的理解,逐步培养解决实际问题的编程能力。

? 实验内容 (一)基础题1

(1)编写链接队列的基本操作函数。

(2)调用上述函数实现下列操作:建立队列、读取队列的第一个元素、从队列中删除元素、输出队列中的所有元素。 (二)基础题2

(1)编写环形队列的基本操作函数。

(2)调用上述函数完成下列操作:建立队列、读取队列的第一个元素、从队列中删除元素、输出队列中的所有元素。

(三)提高题

使用队列结构对医务室事件进行模拟,输出医生的总等待时间和病人的平均等待时间。

? 实验结果

1、基础题1

(1)画出数据结构基本运算的流程图

调用OutputQueue函数 输出操作结果 调用EnQueue函数 调用DeQueue函数 1 进队 2 出队 0 退出 主函数 Switch(op) (2)程序运行主要结果截图

测试用例:依次输入元素23,34,43,56,45进入队列,程序运行结果如图

测试用例:让元素23,34出队,程序运行结果如图

(3)程序源代码

#include #include typedef struct queue{ int data;

struct queue *link; }Q;

void EnQueue(Q **head,Q **tail,int x) { Q *p; p=(Q *)malloc(sizeof(Q)); p->data=x; p->link=NULL; if(*head==NULL)

*head=*tail=p; else { (*tail)->link=p; *tail=p; } }

int DeQueue(Q **head,Q **hail,int *cp) { Q *p; p=*head; if(*head==NULL) return 1; *cp=(*head)->data; *head=(*head)->link; if(*head==NULL) *hail=NULL; free(p); return 0; }

void OutputQueue(Q *head) { while(head!=NULL) { printf(\ head=head->link; } printf(\}

int main() { Q *head,*tail; int op,i; head=tail=NULL; while(1) { printf(\请选择操作,1:进队;2:出队;0:退出\\n\ fflush(stdin); scanf(\ switch(op) { case 0:return 0; case 1: printf(\请输入进队元素:\ scanf(\ EnQueue(&head,&tail,i);