数据结构实验报告 代码

上传人:飞*** 文档编号:43099888 上传时间:2018-06-04 格式:DOC 页数:31 大小:4.48MB
返回 下载 相关 举报
数据结构实验报告 代码_第1页
第1页 / 共31页
数据结构实验报告 代码_第2页
第2页 / 共31页
数据结构实验报告 代码_第3页
第3页 / 共31页
数据结构实验报告 代码_第4页
第4页 / 共31页
数据结构实验报告 代码_第5页
第5页 / 共31页
点击查看更多>>
资源描述

《数据结构实验报告 代码》由会员分享,可在线阅读,更多相关《数据结构实验报告 代码(31页珍藏版)》请在金锄头文库上搜索。

1、数据结构数据结构实验报告实验报告实验序号:5 实验项目名称:链式栈学 号1207082131姓 名罗维卿专业、班12 物联网实验地点指导教师实验时间一、实验目的及要求1. 掌握栈的存储结构的表示和实现方法。二、实验设备(环境)及要求微型计算机;windows 操作系统;Microsoft Visual Studio 6.0 集成开发环境。三、实验内容与步骤(1)根据输入的栈中元素个数和各元素值建立一个链栈,并输出链栈中各元素值, 观察输入的内容与输出的内容是否一致,特别注意栈顶元素的位置。(2)将数据元素 x 入栈,并输出入栈后的链栈中各元素值。(3)将链栈中的栈顶元素出栈,并输入出栈元素的值

2、和出栈后链栈中各元素值。四、实验结果与数据处理五、分析与讨论对上机实践结果进行分析,上机的心得体会。六、教师评语签名:日期:成绩附源程序清单:http:/ bejATfZkUM_pkAPWkfLo2EnxBAF1_JkQ2w7BGlIgDUSr2mwxNssTelZ5prE5lUSaSvDuE3V3 hgOrpTCkWodEdQTyACQWi1实验要求实验要求编程实现如下功能:(1)根据输入的栈中元素个数 n 和各元素值建立一个顺序栈,并输出栈中各元素值。(2)将数据元素 e 入栈,并输出入栈后的顺序栈中各元素值。(3)将顺序栈中的栈顶元素出栈,并输出出栈元素的值和出栈后顺序栈中各元素值。2.

3、 实验相关原理:实验相关原理:栈是一种插入和删除操作都限制在表的一端进行的特殊线性表,它的操作具有“先进后出”的特性。采用顺序存储结构的栈称为顺序栈。栈的存储结构描述如下:#define MAXSIZE 100; /*顺序栈的最大长度*/typedef struct Selemtype baseMAXSIZE; /*存储栈中数据元素的数组*/int top; /*top 为栈顶指针,它指示栈顶元素的存储空间的下一个存储单元*/Sqstack;【核心算法提示】1顺序栈入栈操作的基本步骤:首先判断顺序栈是否为满,如果满,则函数返回ERROR,否则将待入栈的数据元素存放在 top 所指示的存储单元中

4、,再使 top 后移一个存储单元位置,即将 top 值加 1,最后函数返回 OK。2 顺序栈出栈操作的基本步骤:首先判断顺序栈是否为空,如果空,则函数返回ERROR,否则将栈顶指针前移一个存储单元位置,即将 top 值减 1,再将 top 所指示的栈顶元素用 e 返回其值,并使函数返回 OK。【核心算法描述】status Push(Sqstack S.baseS.top+=e;/*将新元素 e 存放在 top 所指示的存储单元中,并使 top 值加 1*/return OK;status Pop(Sqstack e=S.base-S.top;/*将 top 值减 1,并用 e 保存 top 所

5、指示的栈顶元素值*/return OK;3源程序代码参考源程序代码参考#define MAXSIZE 100typedef struct int baseMAXSIZE;int top; /*top 指示存储栈顶元素的下一存储单元*/Sqstack; /*顺序栈的类型定义*/Sqstack Push(Sqstack S,int e) /*顺序栈的入栈操作函数*/ if (S.top=MAXSIZE)printf(“Stack is Overflown“);else S.baseS.top+=e;return S;Sqstack Pop(Sqstack S,int *e) /*顺序栈的出栈操作函

6、数*/ if (S.top=0)printf(“Stack is Emptyn“);else *e=S.base-S.top;return S;void Stack_display(Sqstack S) /*顺序栈的输出函数*/ int i;for(i=0; idata=e; /*新结点的数据域赋值*/p-next=top; /*修改链使新结点插入到链表的头部,并成为新的栈顶元素*/top=p;return OK;status Pop(LinkStack if (!top) /*如果栈空,则函数返回 ERROR*/return ERROR;e=top-data; /*将被删的栈顶元素的值保存在

7、 e 中*/q=top; /*用 q 记下待删的栈顶元素*/top=q-next; /*修改链使待删结点从链中“卸下” ,此时被删结点的后继成为新的栈顶元素结点*/free(q); /*释放被删结点的存储空间*/return OK;数据结构数据结构实验报告实验报告实验序号:7 实验项目名称:串学 号31姓 名罗维卿 专业、班12 物联网实验地点指导教师实验时间一、实验目的及要求1. 掌握串的顺序表示和堆表示实现方法;二、实验设备(环境)及要求微型计算机;windows 操作系统;Microsoft Visual Studio 6.0 集成开发环境。三、实验内容与步骤1、 根据串的三种实现方式,

8、顺序、堆和链,选择其中一种分别实现串赋值、串合并、删除等操作。四、实验结果与数据处理五、分析与讨论对上机实践结果进行分析,上机的心得体会。六、教师评语签名:日期:成绩附源程序清单:http:/ p28DYocmNuyhQvWaWl5NDUegZlEVHzridATZj4a0jrSv9MGO9TwksOMOj9oDa#include #include #define MaxSize 100 typedef struct char dataMaxSize; int length; SqString;void StrAssign(SqString for(i=0;cstri!=0;i+) str.d

9、atai=cstri; str.length=i; void StrCopy(SqString for(i=0;is.length|js.length) couts1.length+1) couts.length|i+js.length+1)/参数不正确时返回空串参数不正确时返回空串 printf(“参数不正确参数不正确n“); return str; for(k=0;ks.length|i+j-1s.length)/参数不正确时返回空串参数不正确时返回空串 printf(“参数不正确参数不正确n“); return str; for(k=0;k0) for(i=0;i #define MAX

10、LEN 50 typedef struct int elemMAXLEN; int length; Sqlist; Sqlist Sqlist_insert(Sqlist L,int i,int x) /* 顺序表插入函数 */ int j; if(iL.length+1) printf(“ERROR!“); else if(L.length=MAXLEN) printf(“OLERFLOW!“); else for(j=L.length-1;j=i-1;j-) L.elemj+1=L.elemj; L.elemi-1=x; L.length+; return L; Sqlist Sqlist

11、_delete(Sqlist L,int i) /* 顺序表删除函数 */ int j; if(iL.length) printf(“ERROR!“); else for(j=i;j#include typedef struct Lnode int data;struct Lnode *next; LNODE,*Linklist;Linklist creat(Linklist L) /*单链表建立函数 */int node; Linklist p;L=(Linklist)malloc(sizeof(LNODE);L-next=NULL;printf(“nplease input the nod

12、e(end with 0):n “);/*请求输入线性表中各个元素,以 0 结束*/scanf(“%d“,while(node!=0)p=(Linklist)malloc(sizeof(LNODE);if (!p) exit();p-data=node;p-next=L-next;L-next=p;scanf(“%d“,return L;Linklist insert(Linklist L,int i,int x) /*单链表插入函数*/ int j;Linklist p,s;p=L; j=0;while (p!=NULL+j;if (p=NULL|ji-1)printf(“n ERROR p

13、osition!n“);else s=(Linklist)malloc(sizeof(LNODE);s-data=x;s-next=p-next;p-next=s;return L;Linklist delete(Linklist L,int i) /*单链表删除函数*/ int j,x; Linklist p,q;p=L; j=0;while(p-next!=NULL+j;if(p-next=NULL|ji-1)printf(“n ERROE position!n“);else q=p-next;p-next=q-next;x=q-data;printf(“the delete data i

14、s:%dn“,x);free(q);return L;int search(Linklist L, int i) /*单链上的查找函数*/ Linklist p; int j;p=L-next;j=1;while (pj+;if (!p /*如果 i 值不合法,即 i 值小于 1 或大于表长,则函数返回 0 值*/elsereturn(p-data); /*否则函数返回第 i 个元素的值*/void display(Linklist L) /*单链表元素输出函数*/ Linklist p;p=L-next;while(p!=NULL) printf(“%4d“,p-data);p=p-next

15、;printf(“n“);main()/*主函数*/Linklist L=NULL; int i,x;L=creat(L);/*调用单链表建立函数*/printf(“the Linklist is:n“);display(L); /*调用单链表元素输出(遍历)函数*/printf(“please input the position you want to insert:“);/*请求输入插入操作位置*/scanf(“%d“,printf(“please input the node you want to insert:“);/*请求输入需要插入的元素*/scanf(“%d“,L=insert(L,i,x);/*调用单链表插入函数*/printf(“the Linklist after inserted is:n“);display(L);/*调用

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 研究报告 > 综合/其它

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号