栈的链式存储结构的表示和实现实验报告
- 格式:doc
- 大小:114.50 KB
- 文档页数:20
实验一熟悉数据结构上机环境1 实验目的1)熟悉Turbo C 2.0 上机环境2)掌握C语言与伪码之间的关系,能够很好把伪码转换为C语言程序2 实验内容1)熟悉C语言开发环境2)编写运用C语言程序3实验结果4实验分析实验二顺序表的实现1 实验目的掌握线性表的基本操作,插入、删除、查找,以及线性表合并等运算在顺序存储结构上的运算。
2 实验内容编写程序实现线性表的顺序存储表示的各种基本操作,如插入、删除、查找等。
3实验结果4实验分析实验三单链表的实现1 实验目的掌握线性表的基本操作,插入、删除、查找,以及线性表合并等运算在链接存储结构上的运算。
2 实验内容编写程序实现线性表的链接存储表示的各种基本操作,如插入、删除、查找等。
3实验结果4实验分析实验四顺序栈的实现1 实验目的1)掌握栈的顺序存储结构和链式存储结构,以便在实际背景下灵活运用。
2)掌握栈的特点,即先进后出。
3)掌握栈的基本运算,如入栈与出栈等运算在顺序存储结构上的实现。
2 实验内容编写程序实现栈的顺序存储结构的实现。
3实验结果4实验分析实验五顺序队列的实现(1)1 实验目的1)掌握队列的顺序存储结构和链式存储结构,以便在实际背景下灵活运用。
2)掌握队列的特点,即先进先出。
3)掌握队列的基本运算,如入队与出队等运算在顺序存储结构的实现。
2 实验内容编写程序实现队列在顺序存储结构中的实现及循环队列的应用。
3实验结果4实验分析实验六顺序队列的实现(2)-----约瑟夫环问题的实现1 实验目的1)掌握队列的顺序存储结构和链式存储结构,以便在实际背景下灵活运用。
2)掌握队列的特点,即先进先出。
3)掌握队列的基本运算,如入队与出队等运算在顺序存储结构的实现。
2 实验内容编写程序实现队列在顺序存储结构中的实现及循环队列的应用。
3实验结果4实验分析实验七稀疏矩阵转置算法的实现1 实验目的1)掌握稀疏矩阵的两种压缩方法的特点和适用范围,领会稀疏矩阵运算采用的处理方法。
苏州科技学院数据结构(C语言版)实验报告专业班级测绘1011学号10201151姓名XX实习地点C1 机房指导教师史守正目录封面 (1)目录 (2)实验一线性表 (3)一、程序设计的基本思想,原理和算法描述 (3)二、源程序及注释(打包上传) (3)三、运行输出结果 (4)四、调试和运行程序过程中产生的问题及采取的措施 (6)五、对算法的程序的讨论、分析,改进设想,其它经验教训 (6)实验二栈和队列 (7)一、程序设计的基本思想,原理和算法描述 (8)二、源程序及注释(打包上传) (8)三、运行输出结果 (8)四、调试和运行程序过程中产生的问题及采取的措施 (10)五、对算法的程序的讨论、分析,改进设想,其它经验教训 (10)实验三树和二叉树 (11)一、程序设计的基本思想,原理和算法描述 (11)二、源程序及注释(打包上传) (12)三、运行输出结果 (12)四、调试和运行程序过程中产生的问题及采取的措施 (12)五、对算法的程序的讨论、分析,改进设想,其它经验教训 (12)实验四图 (13)一、程序设计的基本思想,原理和算法描述 (13)二、源程序及注释(打包上传) (14)三、运行输出结果 (14)四、调试和运行程序过程中产生的问题及采取的措施 (15)五、对算法的程序的讨论、分析,改进设想,其它经验教训 (16)实验五查找 (17)一、程序设计的基本思想,原理和算法描述 (17)二、源程序及注释(打包上传) (18)三、运行输出结果 (18)四、调试和运行程序过程中产生的问题及采取的措施 (19)五、对算法的程序的讨论、分析,改进设想,其它经验教训 (19)实验六排序 (20)一、程序设计的基本思想,原理和算法描述 (20)二、源程序及注释(打包上传) (21)三、运行输出结果 (21)四、调试和运行程序过程中产生的问题及采取的措施 (24)五、对算法的程序的讨论、分析,改进设想,其它经验教训 (24)实验一线性表一、程序设计的基本思想,原理和算法描述:程序的主要分为自定义函数、主函数。
谈顺序存储与链式存储的异同摘要:顺序存储与链式存储的应用范围较为广泛。
顺序存储就是用一组地址连续的存储单元依次存储该线性表中的各个元素,由于表中各个元素具有相同的属性,所以占用的存储空间相同,而链式存储无需担心容量问题,读写速度相对慢些,由于要存储下一个数据的地址所以需要的存储空间比顺序存储大。
关键词:顺序存储链式存储顺序存储与链式存储异同一、什么是顺序存储在计算机中用一组地址连续的存储单元依次存储线性表的各个数据元素,称作线性表的顺序存储结构.顺序存储结构是存储结构类型中的一种,该结构是把逻辑上相邻的节点存储在物理位置上相邻的存储单元中,结点之间的逻辑关系由存储单元的邻接关系来体现。
由此得到的存储结构为顺序存储结构,通常顺序存储结构是借助于计算机程序设计语言(例如c/c++)的数组来描述的。
顺序存储结构的主要优点是节省存储空间,因为分配给数据的存储单元全用存放结点的数据(不考虑c/c++语言中数组需指定大小的情况),结点之间的逻辑关系没有占用额外的存储空间。
采用这种方法时,可实现对结点的随机存取,即每一个结点对应一个序号,由该序号可以直接计算出来结点的存储地址。
但顺序存储方法的主要缺点是不便于修改,对结点的插入、删除运算时,可能要移动一系列的结点。
二、简述链式存储在计算机中用一组任意的存储单元存储线性表的数据元素(这组存储单元可以是连续的,也可以是不连续的).它不要求逻辑上相邻的元素在物理位置上也相邻.因此它没有顺序存储结构所具有的弱点,但也同时失去了顺序表可随机存取的优点.链式存储结构不要求逻辑上相邻的两个数据元素物理上也相邻,也不需要用地址连续的存储单元来实现。
因此在操作上,它也使得插入和删除操作不需要移动大量的结点。
线性表的链式存储结构主要介绍了单链表、循环链表、双向链表和静态链表四种类型,讨论了各种链表的基本运算和实现算法。
三、栈的存储结构:顺序存储和链式存储利用顺序存储方式实现的栈称为顺序栈。
2015-2016学年第二学期《算法与数据结构》课程实验报告专业软件工程学生姓名成晓伟班级软件141学号1410075094实验学时16实验教师徐秀芳信息工程学院实验一单链表的基本操作一、实验目的1.熟悉C语言上机环境,进一步掌握C语言的基本结构及特点。
2.掌握线性表的各种物理存储表示和C语言实现。
3.掌握单链表的各种主要操作的C语言实现。
4.通过实验理解线性表中的单链表存储表示与实现。
二、主要仪器及耗材普通计算机三、实验内容与要求1、用C语言编写一个单链表基本操作测试程序。
(1)初始化单链表(2)创建单链表(3)求单链表长度(4)输出单链表中每一个结点元素(5)指定位置插入某个元素(6)查找第i个结点元素的值(7)查找值为e 的结点,并返回该结点指针(8)删除第i个结点(9)销毁单链表2、实验要求(1)程序中用户可以选择上述基本操作。
程序启动后,在屏幕上可以菜单形式显示不同功能,当按下不同数字后完成指定的功能,按其他键,则显示错误后重新选择。
(2)要求用线性表的顺序存储结构,带头结点的单链表存储结构分别实现。
(3)主函数实现对基本操作功能的调用。
3、主要代码(1)初始化单链表LinkList *InitList(){ //创建一个空链表,初始化线性表LinkList *L;L=(LinkList *)malloc(sizeof(LinkList));L->next=NULL;return L;}(2)创建单链表//头插法void CreateListF(LinkList *L){LinkList *s;int i=1,a=0;while(1){printf("输入第%d个元素(0表示终止)",i++);scanf("%d",&a);if(a==0)break;s=(LinkList *)malloc(sizeof(LinkList));s->data=a;s->next=L->next;L->next=s;}}(3)求链表长度int ListLength(LinkList *L){ //求链表长度int n=0;LinkList *p=L;while(p->next!=NULL){p=p->next;n++;}return(n);}(4)在指定位置插入元素int InsertList(LinkList *L,int i,ElemType e){LinkList *p=L,*s;int j=0;while(p!=NULL&&j<i-1){p=p->next;j++;} //找出要插入的位置的前一个位置if(p==NULL){return 0;}else{s=(LinkList *)malloc(sizeof(LinkList));s->data=e;s->next=p->next;p->next=s;return 1;}}(5)输出链表void DispList(LinkList *L){ //输出链表LinkList *p=L->next;while(p!=NULL){printf("%d",p->data);p=p->next;}printf("\n");}(6)查找链表中指定元素int GetElem(LinkList *L,int i){ //查找链表中指定元素LinkList *p=L;int j=0;while(j<i&&p!=NULL){j++;p=p->next;}if(p==NULL){return 0;}else{return p->data;}}(7)查找值是e的结点并返回该指针LinkList *LocateElem(LinkList *L,ElemType e){ //查找值是e的结点并返回该指针int i=1;LinkList *p=L;while(p!=NULL)if(p->data==e) return p;}if(p==NULL){return NULL;}}(8)删除元素int ListDelete(LinkList *L,int i,ElemType *e){ //删除元素LinkList *p=L,*q;int j=0;while(p!=NULL&&j<i-1){p=p->next;j++;} //找到要删除元素地址的前一个地址if(p==NULL){ return 0;} //不能删除else{q=p->next;*e=q->data;p->next=q->next;free(q); //删除成功return 1;}}(9)销毁链表void DestroyList(LinkList *L){//销毁链表LinkList *pre=L,*p=L->next;while(p!=NULL){free(pre);pre=p;p=pre->next;}free(pre);}main函数:int main(){LinkList *L;ElemType e;int i;L=InitList();CreateListF(L);DispList(L);printf("输入要查找的元素位置:\n");scanf("%d",&i);e=GetElem(L,i);printf("%d\n",e);printf("单链表长度为:%d\n",ListLength(L));printf("输入要删除元素的位置:");scanf("%d",&i);if (i>ListLength(L)){printf("超出范围重新输入");scanf("%d",&i);}if(ListDelete(L,i,&e)==0){printf("未找到元素\n");}else DispList(L);printf("输入插入元素的位置和值:");scanf("%d%d",&i,&e);InsertList(L,i,e);DispList(L);return 0;}4、测试数据及测试结果输入:23 56 12 28 45输出:四、注意事项1、存储结构定义和基本操作尽可能用头文件实现。
《数据结构》实验报告姓名:学号:班级:学院:实验一单链表实验(一)实验目的1.理解线性表的链式存储结构。
2.熟练掌握动态链表结构及有关算法的设计。
3.根据具体问题的需要,设计出合理的表示数据的链表结构,并设计相关算法。
(二)实验任务编写算法实现下列问题的求解1.求链表中第i个结点的指针(函数),若不存在,则返回NULL。
2.在第i个结点前插入值为x的结点。
3.删除链表中第i个元素结点。
4.在一个递增有序的链表L中插入一个值为x的元素,并保持其递增有序特性。
5.将单链表L中的奇数项和偶数项结点分解开,并分别连成一个带头结点的单链表,然后再将这两个新链表同时输出在屏幕上,并保留原链表的显示结果,以便对照求解结果。
6.求两个递增有序链表L1和L2中的公共元素,并以同样方式连接成链表L3。
(三)主要仪器设备PC机,Windows操作平台,Visual C++(四)实验分析顺序表操作:定义一个顺序表类,该类包括顺序表的存储空间、存储容量和长度,以及构造、插入、删除、遍历等操作的方法(五)源程序头文件文件名:linklist.h#include<iostream>using namespace std;struct node{int data;node *next;};class list{public:list();int length()const{return count; //求链表长度}~list();void create(); //链表构建,以0为结束标志void output(); //链表输出int get_element(const int i)const; //按序号取元素node *locate(const int x) const; //搜索对应元素int insert(const int i,const int x); //插入对应元素int delete_element(const int i); //删除对应元素node *get_head(){return head; //读取头指针}void insert2(const int x);friend void SplitList(list L1, list&L2, list &L3);friend void get_public(list L1, list L2, list &L3);private:int count;node *head;};list::list(){head=new node;head->next=NULL;count=0;}void list::create() //链表构建,以0为结束标志{int x;cout<<"请输入当前链表,以0为结束符。
算法与及数据结构实验报告算法与数据结构实验报告一、实验目的本次算法与数据结构实验的主要目的是通过实际操作和编程实现,深入理解和掌握常见算法和数据结构的基本原理、特性和应用,提高我们解决实际问题的能力和编程技巧。
二、实验环境本次实验使用的编程语言为 Python,开发环境为 PyCharm。
同时,为了进行算法性能的分析和比较,使用了 Python 的 time 模块来计算程序的运行时间。
三、实验内容1、线性表的实现与操作顺序表的实现:使用数组来实现顺序表,并实现了插入、删除、查找等基本操作。
链表的实现:通过创建节点类来实现链表,包括单向链表和双向链表,并完成了相应的操作。
2、栈和队列的应用栈的实现与应用:用数组或链表实现栈结构,解决了表达式求值、括号匹配等问题。
队列的实现与应用:实现了顺序队列和循环队列,用于模拟排队系统等场景。
3、树结构的探索二叉树的创建与遍历:实现了二叉树的先序、中序和后序遍历算法,并对其时间复杂度进行了分析。
二叉搜索树的操作:构建二叉搜索树,实现了插入、删除、查找等操作。
4、图的表示与遍历邻接矩阵和邻接表表示图:分别用邻接矩阵和邻接表来存储图的结构,并对两种表示方法的优缺点进行了比较。
图的深度优先遍历和广度优先遍历:实现了两种遍历算法,并应用于解决路径查找等问题。
5、排序算法的比较插入排序、冒泡排序、选择排序:实现了这三种简单排序算法,并对不同规模的数据进行排序,比较它们的性能。
快速排序、归并排序:深入理解并实现了这两种高效的排序算法,通过实验分析其在不同情况下的表现。
6、查找算法的实践顺序查找、二分查找:实现了这两种基本的查找算法,并比较它们在有序和无序数据中的查找效率。
四、实验步骤及结果分析1、线性表的实现与操作顺序表:在实现顺序表的插入操作时,如果插入位置在表的末尾或中间,需要移动后续元素以腾出空间。
删除操作同理,需要移动被删除元素后面的元素。
在查找操作中,通过遍历数组即可完成。
一、引言数据结构是计算机科学中一个重要的基础学科,它研究数据元素之间的逻辑关系及其在计算机中的存储和表示。
为了更好地掌握数据结构的相关知识,本实训报告参考了以下几本优秀的书籍和文献,以期为读者提供有益的参考。
二、参考文献1. 《数据结构(第2版)》作者:Thomas H. Cormen, Charles E. Leiserson, Ronald L. Rivest, Clifford Stein本书是数据结构领域的经典教材,全面介绍了数据结构的原理、算法和应用。
书中详细阐述了线性表、栈、队列、链表、树、图等常见数据结构及其操作算法,并对算法的复杂度进行了深入分析。
此外,本书还涵盖了数据结构在实际应用中的案例分析,有助于读者将理论知识与实际应用相结合。
2. 《算法(第四版)》作者:Robert Sedgewick, Kevin Wayne本书是算法领域的权威教材,内容涵盖了算法的基本概念、算法设计方法、算法分析及实现。
书中详细介绍了排序、搜索、图论、动态规划等算法,并对算法的时间复杂度和空间复杂度进行了深入分析。
本书适合有一定编程基础和数据结构基础的学习者阅读。
3. 《数据结构与算法(第四版)》作者:Adam Drozdek本书是一本适合初学者的数据结构教材,内容简洁明了,易于理解。
书中从基本概念出发,逐步引入数据结构的原理、算法和应用。
书中不仅介绍了线性表、栈、队列、链表、树、图等常见数据结构,还涵盖了排序、搜索、图论、动态规划等算法。
4. 《算法导论(第3版)》作者:Thomas H. Cormen, Charles E. Leiserson, Ronald L. Rivest, Clifford Stein本书是算法领域的另一本经典教材,与《数据结构(第2版)》相比,本书更注重算法的原理和设计方法。
书中详细介绍了算法的基本概念、算法设计方法、算法分析及实现。
本书适合有一定编程基础和数学基础的学习者阅读。
上机实验题实验1控制流的熟悉实验目的:熟练掌握if-else、while(do)、for、break和continue等控制语句实验要求:1.编写两个函数比较if else 与swich case区别2.编写两个函数比较while与do while区别3.编写一个函数熟悉for循环语句4.编写三个函数比较break与continue区别实验步骤、方法:选择结构:1、输入两个数,分别存放在变量a和b中:scand(“%d%d”,&a,&b);2、进行比较,并将较大数存储在变量c中if(a>b) c=a;else c=b;3、输出变量c printf(“%d”,c);循环结构:1+2+3+….+1001、初始化部分:建立循环首次执行所需条件:如:sum=0; k=1;2、循环部分:需要重复执行的操作:如:sum=sum+k;3、增量修改:修改循环次数变量的值,使之趋于结束:如:k++;4、终止测试:当不满足条件时执行循环,否则结束循环if(k<=100)实验练习:1、编程实现对键盘输入的英文名句子进行加密。
用加密方法为,当内容为英文字母时其在26字母中的其后三个字母代替该字母,若为其它字符时不变:2、编程实现将任意的十进制整数转换成R进制数(R在2-16之间)。
3、从键盘输入一指定金额(以元为单位,如345.78),然后显示支付该金额的各种面额人民币数量,要求显示100元、50元、10元、5元、2元、1元、1角、5分、1分各多少张。
4、为进行交通流量统计调查,在路边设置一个车辆探测器,探测信号通过线路送入计算机。
当有车辆通过时,探测器传送数字信号1给计算机。
探测器中有一个计时器,每隔一秒钟发送一个数字信号2给计算机。
计时器从开始探测时计时,探测结束是送一个数字信号0给计算机。
写程序模拟:1、进行了多长时间的统计调查;2、记录到的车辆数;3、车辆间最长时间间隔是多少?(提示:用while语句写此程序)5编写一个程序模拟袖珍计算器的加、减、乘、除四则运算。
第1篇一、实验目的1. 理解树的基本概念,包括树的定义、性质和分类。
2. 掌握树的存储结构,包括顺序存储结构和链式存储结构。
3. 熟悉树的遍历方法,包括前序遍历、中序遍历、后序遍历和层次遍历。
4. 学会利用树的结构解决实际问题。
二、实验内容1. 树的基本概念及性质2. 树的存储结构3. 树的遍历方法4. 利用树解决实际问题三、实验过程1. 树的基本概念及性质在实验过程中,我们首先学习了树的基本概念,包括树的定义、性质和分类。
通过学习,我们了解到树是一种层次结构,由若干个节点组成,节点之间存在一定的关系。
树的性质包括节点数、边数、度、路径长度等。
在此基础上,我们还学习了树的分类,如二叉树、完全二叉树、平衡二叉树等。
2. 树的存储结构在实验过程中,我们学习了两种树的结构存储方式:顺序存储结构和链式存储结构。
(1)顺序存储结构:采用一维数组存储树,每个节点在数组中的位置由其层次和位置决定。
这种存储方式便于实现树的遍历,但存储空间利用率较低。
(2)链式存储结构:采用链表存储树,每个节点包含数据域和两个指针域,分别指向其左右子节点。
这种存储方式存储空间利用率较高,但遍历速度较慢。
3. 树的遍历方法在实验过程中,我们学习了四种树的遍历方法:前序遍历、中序遍历、后序遍历和层次遍历。
(1)前序遍历:先访问根节点,然后依次遍历左子树和右子树。
(2)中序遍历:先遍历左子树,然后访问根节点,最后遍历右子树。
(3)后序遍历:先遍历左子树,然后遍历右子树,最后访问根节点。
(4)层次遍历:从根节点开始,逐层遍历树中的节点。
4. 利用树解决实际问题在实验过程中,我们通过一个实际问题来应用所学的树的知识。
问题如下:某学校有n个班级,每个班级有若干名学生。
请设计一个程序,实现以下功能:(1)输入班级信息,包括班级编号和班级人数。
(2)输入学生信息,包括学生姓名、班级编号和成绩。
(3)输出每个班级的平均成绩。
(4)输出所有学生的成绩排名。
上机实验要求及规范《数据结构》课程具有比较强的理论性,同时也具有较强的可应用性和实践性,因此上机实验是一个重要的教学环节。
一般情况下学生能够重视实验环节,对于编写程序上机练习具有一定的积极性,但是容易忽略实验的总结,忽略实验报告的撰写。
对于一名大学生必须严格训练分析总结能力、书面表达能力。
需要逐步培养书写科学实验报告以及科技论文的能力。
拿到一个题目,一般不要急于编程,而是应该按照面向过程的程序设计思路(关于面向对象的训练将在其它后继课程中进行),首先理解问题,明确给定的条件和要求解决的问题,然后按照自顶向下,逐步求精,分而治之的策略,逐一地解决子问题。
具体步骤如下:1.问题分析与系统结构设计充分地分析和理解问题本身,弄清要求做什么(而不是怎么做),限制条件是什么。
按照以数据结构为中心的原则划分模块,搞清数据的逻辑结构(是线性表还是树、图?),确定数据的存储结构(是顺序结构还是链表结构?),然后设计有关操作的函数。
在每个函数模块中,要综合考虑系统功能,使系统结构清晰、合理、简单和易于调试。
最后写出每个模块的算法头和规格说明,列出模块之间的调用关系(可以用图表示),便完成了系统结构设计。
2.详细设计和编码详细设计是对函数(模块)的进一步求精,用伪高级语言(如类C语言)或自然语言写出算法框架,这时不必确定很多结构和变量。
编码,即程序设计,是对详细设计结果的进一步求精,即用某种高级语言(如C/C++语言)表达出来。
尽量多设一些注释语句,清晰易懂。
尽量临时增加一些输出语句,便于差错矫正,在程序成功后再删去它们。
3.上机准备熟悉高级语言用法,如C语言。
熟悉机器(即操作系统),基本的常用命令。
静态检查主要有两条路径,一是用一组测试数据手工执行程序(或分模块进行);二是通过阅读或给别人讲解自己的程序而深入全面地理解程序逻辑,在这个过程中再加入一些注释和断言。
如果程序中逻辑概念清楚,后者将比前者有效。
4.上机调试程序调试最好分块进行,自底向上,即先调试底层函数,必要时可以另写一个调用驱动程序,表面上的麻烦工作可以大大降低调试时所面临的复杂性,提高工作效率。
- --
- . -word资料-
数 据 结 构 实 验 报 告 册
班 级:
学 号:
姓 名:
- --
- . -word资料-
实验题目:
栈的链式存储结构的表示和实现
实验日期:
实验要求:
1.认真阅读和掌握本实验的相关知识。
2.编写程序实现栈的链式存储方式。
3.编写程序实现对栈空的判断以及栈的入栈和出栈操作、取栈顶元素。
4.保存程序的运行结果,结合程序分析链式结构的特点。
5.填写实验报告
概要设计:
(1)初始化链栈。
(2)将链栈置空。
(3)完成入栈和出栈操作,完成取栈顶元素操作。
(4)选择菜单上的0,退出该程序的运行,结束实验内容。
初始化栈操作,将栈的栈顶指针置为空值,即设栈S和栈顶指针top,
S→top=null。
如果所建栈里有数据元素,要将其置空,同样也是将栈顶指针的值置
为空值。
入栈操作,向栈里插入数据元素。首先要为插入数据元素分配结点,
将插入数据元素的值赋值给插入结点的数据域,其次修改栈顶指针的指向
关系,即修改插入结点和栈顶指针的地址,最后修改栈顶指针。
出栈操作,从栈里删除数据元素。首先要判断栈是否为空栈,如是空
栈则操作失败。否则,进行出栈操作,修改删除结点和栈顶指针,最后释
放删除结点。
取栈顶元素。
- --
- . -word资料-
详细设计:
//链栈类型定义
typedef int ElemType;
typedef struct stacknode
{
ElemType data;
stacknode *next;
}StackNode;
typedef struct
{
stacknode *top;
}LinkStack;
//入栈
void pushLstack(LinkStack *s,ElemType x)
{
StackNode *p;
p=new StackNode;
p->data=x;
p->next=s->top;
s->top=p;
}
//出栈
- --
- . -word资料-
ElemType popstack(LinkStack *s)
{
ElemType x;
StackNode *p;
p=s->top;
if(s->top==0)
{
printf("栈空,不能出栈!!\n");
return 0;
exit(0);
}
x=p->data;
printf("%d\n",x);
s->top=p->next;delete p;
return x;
}
//取栈顶元素
ElemType StackTop(LinkStack *s)
{
ElemType x;
if(s->top==0)
{
- --
- . -word资料-
printf("链栈空!!\n");
return 0;
}
else
{
x=s->top->data;
printf("当前链栈的栈顶元素为%d",x);
return 0;
}
} top
top top
1,入栈示意图 2,出栈示意图
X
an a
1 ^
an an-1 a
1
- --
- . -word资料-
3,出栈 4,取栈顶元素
开始
ElemType x;
s->tope==
0
Printf(“栈空,不能出栈
“)
x=p->data
s->top=p->next;delete
p
;
return x;
结束
ElemType x;
开始
s->top==0
Printf(“链栈为空 X=s->top->data;
return o; return o
结束
- --
- . -word资料-
调试分析:
在调试中出现以上错误,经过查找原程序发现scanf("%d",&cord);中少
填写了地址符。
在调试中出现了初始化以后,没有在主菜单中选择操作就直接运行入栈
了,经过查找原程序发现在swich语句中少了break。
- --
- . -word资料-
测试结果:
实验成绩:
- --
- . -word资料-
实验题目:
实验日期:
实验要求:
概要设计:
- --
- . -word资料-
详细设计:
- --
- . -word资料-
调试分析:
测试结果:
实验成绩:
- --
- . -word资料-
实验题目:
实验日期:
实验要求:
概要设计:
- --
- . -word资料-
详细设计:
- --
- . -word资料-
调试分析:
测试结果:
实验成绩:
- --
- . -word资料-
实验题目:
实验日期:
实验要求:
概要设计:
- --
- . -word资料-
详细设计:
- --
- . -word资料-
调试分析:
测试结果:
实验成绩:
- --
- . -word资料-
实验题目:
实验日期:
实验要求:
概要设计:
- --
- . -word资料-
详细设计:
- --
- . -word资料-
调试分析:
测试结果:
实验成绩: