收藏 分享(赏)

算法与数据结构09867.doc

上传人:dzzj200808 文档编号:2305168 上传时间:2018-09-10 格式:DOC 页数:12 大小:53.50KB
下载 相关 举报
算法与数据结构09867.doc_第1页
第1页 / 共12页
算法与数据结构09867.doc_第2页
第2页 / 共12页
算法与数据结构09867.doc_第3页
第3页 / 共12页
算法与数据结构09867.doc_第4页
第4页 / 共12页
算法与数据结构09867.doc_第5页
第5页 / 共12页
点击查看更多>>
资源描述

1、算法与数据结构实验(上机)报告班级学号 16 姓名 练清 实验日期 2011.5.3 任课教师 熊保平 实验名称 栈 验证型实验目的及要求:1.掌握栈的顺序表示和实现 2. 掌握栈的链式表示和实现 实验内容:1. 编写一个程序实现顺序栈的各种基本运算。 2. 编写一个程序实现链栈的各种基本运算3.源程序:/*-顺序栈-*/#include typedef char ElemType; #define MAXLEN 100 typedef struct ElemType dataMAXLEN; int top; SeqStack; void InitStack( SeqStack *S ) S-

2、top=-1; /*初始的顺序栈为空*/ int EmptyStack(SeqStack *S) if(S-top=-1) /*栈为空*/ return 1; else return 0; int Push(SeqStack *S,ElemType x) if(S-top=MAXLEN-1) /*栈为满*/ printf(“栈满溢出!“); return 0; /*栈满不能入栈*/ else /*栈不为满*/ S-top+; S-dataS-top=x; return 1; int Pop(SeqStack *S,ElemType *x) if(EmptyStack(S) printf(“栈空

3、!“); return 0; /*栈空不能出栈*/ else /*栈不为空*/ *x=S-dataS-top; S-top-; return 1; int GetTop(SeqStack *S,ElemType *x) if(EmptyStack(S) printf(“栈空!“); return 0; else /*栈不为空*/ *x=S-dataS-top; return 1; void main() SeqStack S;ElemType x; InitStack( printf(“依次进栈元素为:n“); printf(“r 元素进栈n“); Push( printf(“a 元素进栈n“

4、); Push( printf(“h 元素进栈n“); Push( printf(“c 元素进栈n“); Push( GetTop( printf(“栈顶元素为:%cn“,x); printf(“出栈序列为:“); while(!EmptyStack( printf(“%c“,x); printf(“n“); /*-链栈-*/#include #include typedef char ElemType; typedef struct node ElemType data; struct node *next; LinkStack; LinkStack *InitStack() LinkSta

5、ck *S; S=NULL; return S; /*初始化栈为空*/ int EmptyStack(LinkStack *S) if(S=NULL) /*栈为空*/ return 1; else return 0; LinkStack *Push(LinkStack *S,ElemType x) LinkStack *p; p=(LinkStack*)malloc(sizeof(LinkStack);p-data=x; p-next=S; S=p; return S; LinkStack *Pop(LinkStack *S,ElemType *x) LinkStack *p; if(Empt

6、yStack(S) /*调用判空函数 EmptyStack(S),判断栈是否为空*/ printf(“栈空!“); return NULL; /*栈空不能出栈*/ else /*栈不为空*/ *x=S-data; /*栈顶元素取出赋给 x*/ p=S; /*p 结点指向原栈顶 S*/ S=S-next; /*原栈顶 S 指向其下一个结点*/free(p); /*释放原栈顶空间*/ return S; /*返回栈顶 S*/ int GetTop(LinkStack *S,ElemType *x) if(EmptyStack(S) /*调用判空函数 EmptyStack(S),判断栈是否为空*/

7、printf(“栈空!“); return 0; else /*栈不为空*/ *x=S-data; /*栈顶元素赋给变量 x*/ return 1; void main() LinkStack *S; ElemType x; S=InitStack(); printf(“依次进栈元素为:n“); printf(“r 元素进栈n“); S=Push(S,r); printf(“a 元素进栈n“); S=Push(S,a); printf(“h 元素进栈n“); S=Push(S,h); printf(“c 元素进栈n“); S=Push(S,c); GetTop(S, printf(“栈顶元素为

8、:%cn“,x); printf(“出栈序列为:“); while(!EmptyStack(S) S=Pop(S, printf(“%c“,x); printf(“n“); 结果: 线性栈:依次进栈元素为:r 元素进栈a 元素进栈h 元素进栈c 元素进栈栈顶元素为:c出栈序列为:char链栈:依次进栈元素为:r 元素进栈a 元素进栈h 元素进栈c 元素进栈栈顶元素为:c出栈序列为:char 请写出实验内容的操作步骤:1.初始化顺序栈 2. 插入元素 3. 删除栈顶元素操作步骤(续):4. 取栈顶元素 5. 遍历顺序栈 6. 置空顺序栈实验中遇到的问题和总结;教师批语与成绩评定:评阅教师: 年 月 日

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高等教育 > 大学课件

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报