下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、.淮海工学院计算机科学系实验报告书课程名:数据结构题 目: 线性数据结构实验 (栈与对立队列及其应用)班 级: 学 号: 2012122693姓 名: 评语:成绩: 指导教师: 批阅时间: 年 月 日. v.线性表算法实现与应用报告要求1目的与要求:1)掌握栈与队列的数据类型描述及特点;2)掌握栈的顺序和链式存储存表示与基本算法的实现;3)掌握队列的链式和循环存储表示与基本操作算法实现;4) 掌握栈与队列在实际问题中的应用和基本编程技巧;5)按照实验题目要求,独立完成实际程序的编写编写、调试和运行,并通过用例数的运行过程抓获相关屏面验证程序设计的正确性;7)由于国庆节占用授课时间,所以本次实验
2、将不做统一上机安排,要求同学们节日期间自行完成实验任务,并于第6周周4以前按时提交实验报告。2实验内容或题目(一)必做题:1、实现顺序栈的创建(初始化)、压入(插入)、弹出(删除)操作(数据元素类型自己选取,如整型、字符型等),并给出栈的每次操作变化状态;2、实现链栈的创建(初始化)、压入(插入)、弹出(删除)操作(数据元素类型自己选取,如整型、字符型等),要求给出栈的操作变化过程;3、实现循环队列的创建、进队、出队等基本操作(数据元素类型自己选取,如整型、字符型等),并实时给出队列的操作变化状态;4、实现链式队列的创建、进队、出队等基本操作(数据元素类型自己选取,如整型、字符型等),并实时给
3、出队列的操作变化状态;(二)选做题(视自己能力而定,数量不限):任选一个或多个源程序(已经发给学委),并阅读、调试和运行程序,而后给出程序功能分析和实例运行演示;1、实现表达式求值算法程序;2、用递归算法实现汉诺塔问题算法程序;3、使用循环队列实现打印杨辉三角形算法程序。3实验步骤与源程序第一题:*include <stdio.h>*include <stdlib.h>*define TRUE 1*define FALSE 0*define Size 50typedef structint elemSize; int top; SeqStack;void InitSta
4、ck(SeqStack *S) S->top =-1;int IsEmpty(SeqStack *S)return(S->top=-1"TRUE:FALSE);/判断栈空 为空是真 反之为假int IsFull(SeqStack *S)return(S->top=Size-1"TRUE:FALSE);/判断栈满 为满是真 反之为假int Push(SeqStack *S,int x)/压栈if(S->top=Size-1) return(FALSE); S->top+;S->elemS->top = x;return(TRUE);i
5、nt Pop(SeqStack *S,int *x)/弹出 if(S->top = -1) return(FALSE);else *x = S->elemS->top;S->top-; return(TRUE);void main() SeqStack S;int x,y,i,l; InitStack(&S); if(!IsFull(&S)printf("栈空:n");printf("输入要压入的元素个数(50以内):n");scanf("%d",&l);printf("输入要
6、压入的元素:n");for(i=0;i<l;i+)scanf("%d",&y);Push(&S,y);printf("弹出:n");while(!IsEmpty(&S) Pop(&S,&x); printf("%dn",x);第二题:*define TRUE 1*define FALSE 0*include <stdio.h>*include <stdlib.h>typedef struct nodeint data;struct node *next;L
7、inkStackNode;typedef LinkStackNode *LinkStack;int IsEmpty(LinkStack S)return NULL=S->next"TRUE:FALSE;int InitStack(LinkStack *S)*S=(node*)malloc(sizeof(node);if(NULL=*S)return FALSE;(*S)->next =NULL;return TRUE;int Push(LinkStack S, int x)LinkStackNode *temp;temp=(LinkStackNode *)malloc(s
8、izeof(LinkStackNode); if(temp=NULL) return(FALSE); temp->data=x;temp->next=S->next;S->next=temp; return(TRUE);int Pop(LinkStack S, int *x) LinkStackNode * temp;temp=S->next;if(temp=NULL) return(FALSE);S->next=temp->next;*x=temp->data;free(temp); return(TRUE);void main()LinkSt
9、ackNode *s; InitStack(&s);int x,i,l;if(IsEmpty(s)printf("栈空 n");printf("请输入压入元素个数(50以内):n"); scanf("%d",&l);printf("请输入压入元素:n");for(i=0;i<l;i+)scanf("%d",&x);Push(s,x);printf("弹出:n");while(!IsEmpty(s)Pop(s, &x);printf(&qu
10、ot;%dn",x);第三题:*include <stdio.h>*include <stdlib.h>*define TRUE 1*define FALSE 0*define MAXSIZE 50 typedef struct int elementMAXSIZE; int front; int rear; SeqQueue;void InitQueue(SeqQueue *Q) Q->front=Q->rear=0;int EnterQueue(SeqQueue *Q, int x) if(Q->rear+1)%MAXSIZE=Q->
11、;front) return(FALSE);Q->elementQ->rear=x;Q->rear=(Q->rear+1)%MAXSIZE; return(TRUE); int DeleteQueue(SeqQueue *Q, int *x) if(Q->front=Q->rear) return(FALSE);*x=Q->elementQ->front;Q->front=(Q->front+1)%MAXSIZE; return(TRUE); int IsEmpty(SeqQueue *Q) if(Q->front=Q->
12、rear) return(TRUE);elsereturn(FALSE); void main()SeqQueue s;InitQueue(&s);int x,i,l;if(IsEmpty (&s)printf("此时为空队列n");printf("请输入进队元素个数n");scanf("%d",&l);printf("请输入元素n");for(i=0;i<l;i+)scanf("%d",&x);EnterQueue(&s,x);printf(&qu
13、ot;出队:n");while(!IsEmpty(&s)DeleteQueue(&s,&x);printf("%dn",x);if(IsEmpty (&s)printf("此时为空队列n");第四题:*include <stdio.h>*include <stdlib.h>*define TRUE 1*define FALSE 0typedef struct Nodeint data;struct Node *next;LinkQueueNode;typedef structLinkQue
14、ueNode *front ;LinkQueueNode *rear;LinkQueue;int IsEmpty(LinkQueue *Q)return Q->front =Q->rear"TRUE:FALSE;int InitQueue(LinkQueue *Q)Q->front=(LinkQueueNode *)malloc(sizeof(LinkQueueNode);if(Q->front!=NULL)Q->rear=Q->front;Q->front->next=NULL;return (TRUE);else return(FA
15、LSE);int EnterQueue(LinkQueue *Q,int x)LinkQueueNode *NewNode;NewNode=(LinkQueueNode *)malloc(sizeof(LinkQueueNode);if(NewNode!=NULL)NewNode->data=x;NewNode->next=NULL;Q->rear->next=NewNode;Q->rear=NewNode;return (TRUE);else return(FALSE);int DeleteQueue(LinkQueue *Q,int *x)LinkQueueN
16、ode *p;if(Q->front=Q->rear)return(FALSE);p=Q->front->next ;Q->front->next =p->next ;if(Q->rear=p)Q->rear=Q->front;*x=p->data;free(p);return (TRUE);void main()LinkQueue q;int x,i,l;InitQueue(&q);if(IsEmpty(&q)printf("此时为空队列n");printf("请输入进队元个数素n
17、");scanf("%d",&l);printf("请输入元素:n");for(i=0;i<l;i+)scanf("%d",&x);EnterQueue(&q,x);printf("出队:n");for(i=0;i<l;i+)DeleteQueue(&q,&x); printf("%dn",x);if(IsEmpty(&q)printf("此时为空队列n");4 测试数据与实验结果(可以抓图粘贴)5结果分析与实验体会开始在编写第一题时,将所有代码完成后一直报错,反复检查代码没有错误,后来看到头文件名是*include <iostream.h>因为C+习惯导致错误,后来改为<stdio.h>就正确了,
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 智能控制系统专项施工方案
- 全球医用智能纺织品行业分析:市场规模约为682.9百万美元
- 邮储银行大楼施工组织设计
- 江苏省苏州市2024-2025学年高三上学期开学调研测试语文试题
- 矩形盾构法隧道施工技术探索(李刚)
- 【作文课件】让脑洞飞一会儿-运用联想和想象写作教案
- 《清明青团》幼儿园小学少儿美术教育绘画课件创意教程教案
- 2025届高考语文一轮复习专题七辨析并修改蹭试题2含解析新人教版
- 第三单元测量(单元测试)-2024-2025学年三年级上册数学人教版
- 二年级下册数学表格教案
- 2024车位转让出租协议书范本
- 2024年湖北省武汉市中考语文试卷真题(含答案)
- 2024年云南新华书店图书限公司招聘工作人员历年【重点基础提升】模拟试题(共500题)附带答案详解
- (学校)教育领域群众身边不正之风和腐败问题集中整治问题自查报告及整改措施
- 2024下半年甘肃事业单位联考考试笔试易考易错模拟试题(共500题)试卷后附参考答案
- 塑胶原料来料检验报告
- 《食管疾病》课件
- 2024年新修订公司法知识题库及答案
- 实验室6S管理实施工作细则
- 七年级历史质量分析
- 网络安全意识培训你是网络安全的第一道防线
评论
0/150
提交评论