1、栈的表示及实现 实验报告班级 信工082 学号 200806030202 姓名 李霄 实验组别 实验日期 2010-12-20 室温 报告日期 2010-12-20 成绩 报告内容:(目的和要求,原理,步骤,数据,计算,小结等)实验名称: 实验二 栈的表示及实现 实验目的:1、通过实验进一步理解栈的“先进后出”特性。2、掌握栈的逻辑结构,以及顺序存储结构和链式存储结构。3、熟练运用C语言实现栈的基本操作。4、灵活运用栈解决实际问题。实验内容:已知学生数据元素的数据类型如下: Struct Student int ID;/*学号*/ char name10;/*姓名*/ ; 1、请设计4个学生数
2、据,学号分别为10,20,30,40,并把这些数据依次入顺序栈,然后出栈并在屏幕上显示出来。2、入栈两个学生数据,然后出栈一个学生数据,再次入栈两个学生数据,然后出栈3个学生数据,并与1的结果进行比较。3、如何操作能得到“20,40,30,10”的结果。4、使用与1同样的学生数据,并把这些数据依次入链栈,然后出栈并在屏幕上显示出来,与1的结果比较看是否一样。5、请设计一个能够测试栈空和栈满的实验。实验学时、:2学时实验程序#include malloc.h#include conio.h#include stdio.h#define STACKSIZE 100typedef int DataT
3、ype;typedef struct DataType itemsSTACKSIZE; int top; SqStack; typedef struct SNode DataType data; struct SNode* next; SNode,*LinkStack;struct studentint ID;char name10;struct student stu4=10,li,20,song,30,xiao,40,hang;main() sheji1(); printf(nan ren yi jian jin xing sheji2n); getchar(); sheji2(); pr
4、intf(nan ren yi jian jin xing sheji3n); getchar(); sheji2(); printf(nan ren yi jian jin xing sheji4n); getchar(); sheji4(); printf(nan ren yi jian jin xing sheji5n); getchar(); sheji5();sheji1() SqStack sta; int i,e; int length=4; InitStack(&sta); for(i=0;ilength;i+) Push(&sta,stui.ID); printf(chu z
5、han shun xu1 wei:n); while(!StackEmpty(sta) Pop(&sta,&e); printf(%dt,e); sheji2() int i,e; SqStack sta; InitStack(&sta); for(i=0;i2;i+) Push(&sta,stui.ID); printf(chu zhan shun xu2 wei:n); Pop(&sta,&e); printf(%dt,e); for(i=2;i4;i+) Push(&sta,stui.ID); while(!StackEmpty(sta) Pop(&sta,&e); printf(%dt
6、,e); sheji4() int i,e; int *top; InitStack1(&top); for(i=0;itop=-1; return 1; int StackEmpty(SqStack sta) if(sta.top=-1) return 1; else return 0; int Push(SqStack *sta,int e) if(sta-top=STACKSIZE-1) printf(errorsn); return 0; sta-top+; sta-itemssta-top=e; return 1; int Pop(SqStack *sta,int *e) if(st
7、a-topitemssta-top; sta-top-; return 1; int InitStack1(LinkStack *top) *top=(LinkStack)malloc(sizeof(SNode); if(*top=NULL) printf(cuo wu);return 0; (*top)-next=NULL; return 1; int Push1(LinkStack top,DataType e) SNode *p; p=(SNode*)malloc(sizeof(SNode); if(!p) printf(cuo wu);return 0; p-data=e; p-nex
8、t=top-next; top-next=p; return 1; int Pop1(LinkStack top,DataType *e) SNode *p; if(!top-next) printf(cuo wu); return 0; p=top-next; top-next=p-next; *e=p-data; free(p); return 1; int StackEmpty1(LinkStack top) if(top-next=NULL) return 1; else return 0; 实验步骤1、WIN-TC开发环境安装与配置1)首先在网上下载WIN-TC的版本;2)下载完成后
9、进行安装,安装路径默认就可以了,一路next就ok了;3)打开WIN-TC会出现如下界面;2、在WIN-TC中输程序,源代码见算法流程。3、在运行中点编译连接。4、运行后显示编译成功即没有错误,如图:5、点确定后再在运行中点编译连接并运行,并出现如下窗口:6、点击确定后出现如下窗口:7、按回车后显示:8、按回车显示如图:9、按回车显示如图:10、按回车显示如图:实验结果:通过实验步骤中的截图可以看出本次实验所编译的程序能够实验实验内容中的要求。心得体会:通过本次实验,使我区分了顺序栈和链栈,同时对顺序栈的定义、入栈、出栈等程序的编译及其调用有所了解,并且对链栈的定义、入栈、出栈等程序的编译及其调用有所掌握,并对其结构通过运行的过程中有所掌握。
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1