数据结构C语言版顺序栈上机实验.docx
- 文档编号:30690191
- 上传时间:2023-08-19
- 格式:DOCX
- 页数:20
- 大小:16.56KB
数据结构C语言版顺序栈上机实验.docx
《数据结构C语言版顺序栈上机实验.docx》由会员分享,可在线阅读,更多相关《数据结构C语言版顺序栈上机实验.docx(20页珍藏版)》请在冰豆网上搜索。
数据结构C语言版顺序栈上机实验
实验3-1链栈
[目的]掌握链栈的实现和简单的应用。
[源代码]
/****************************************************
@title:
数据结构实验
@name:
<实验3-1>栈的链式存储结构
@object:
[实验目的]
采用链式存储结构实现栈的基本操作
[实验提示]
1.在stack.h中实现栈的基本操作,
在链式存储结构中可是省去头结点。
2.在dsp0301.cpp中编写适当的代码,进行测试
@include:
stack.h[*]
栈的链式实现
@usage:
请查看"TO-DO列表",根据要求完成代码
@copyright:
BTC2004,ZhuangBo
@author:
ZhuangBo
@date:
2004
@description:
*****************************************************/
#include
#include
#include"stack.h"//链栈
//测试链栈的主程序
intmain()
{
LinkStacks;
intx;
//输入若干正整数以0结束,依次入栈,然后依次出栈并打印
InitStack(s);
printf("输入若干正整数以0结束:
");
scanf("%d",&x);
while(x!
=0){
Push(s,x);
scanf("%d",&x);
}
printf("\n出栈结果:
");
while(!
StackEmpty(s)){
Pop(s,x);
printf("%4d",x);
}
//-------------------------------------
//TODO(#1#):
其它测试程序
//-------------------------------------
DestroyStack(s);//销毁栈
system("PAUSE");
return0;
}
/*
Name:
栈的链式实现
Copyright:
Author:
Date:
Description:
*/
#ifndefSTACK_H_INCLUDED
#defineSTACK_H_INCLUDED
#include"ds.h"//forStatus,OK...
#ifndefElemType
#defineElemTypeint/*数据元素类型默认为int*/
#defineELEMTYPE_TAG
#endif
///////////////////////////////////////////////////////////
//链栈的存储结构定义
typedefstructLNode{
ElemTypedata;
structLNode*next;
}LNode,*LinkList;
typedefLinkListLinkStack;//链栈类型
///////////////////////////////////////////////////////////
//链栈的基本操作声明
//构造一个空栈S
StatusInitStack(LinkStack&S);
//销毁栈S
StatusDestroyStack(LinkStack&S);
//将栈S清空
StatusClearStack(LinkStack&S);
//若栈S为空返回TRUE,否则FALSE
StatusStackEmpty(LinkStackS);
//返回栈S中的元素个数
intStackLength(LinkStackS);
//用e返回栈顶元素
//前提:
栈S存在且不空
StatusGetTop(LinkStackS,ElemType&e);
//元素e入栈S
StatusPush(LinkStack&S,ElemTypee);
//S出栈用e返回出栈元素
//前提:
栈S存在且不空
StatusPop(LinkStack&S,ElemType&e);
///////////////////////////////////////////////////////////
//链栈的基本操作的实现
//构造一个空栈S
StatusInitStack(LinkStack&S)
{
//TODO(#1#):
构造一个空栈S,不带头结点
returnERROR;
//-------------------------------------
}
//销毁栈S
StatusDestroyStack(LinkStack&S)
{
//TODO(#1#):
销毁栈S,相当于清空栈
returnERROR;
//-------------------------------------
}
//将栈S清空
StatusClearStack(LinkStack&S)
{
//TODO(#1#):
将栈S清空,释放所有结点
returnERROR;
//-------------------------------------
}
//若栈S为空返回TRUE,否则FALSE
StatusStackEmpty(LinkStackS)
{
//TODO(#1#):
若栈S为空返回TRUE,否则FALSE
returnTRUE;
//-------------------------------------
}
//返回栈S中的元素个数
intStackLength(LinkStackS)
{
//TODO(#1#):
返回栈S中的元素个数
return0;
//-------------------------------------
}
//用e返回栈顶元素
//前提:
栈S存在且不空
StatusGetTop(LinkStackS,ElemType&e)
{
//TODO(#1#):
若栈S不空,则用e返回栈顶元素
returnERROR;
//-------------------------------------
}
//元素e入栈S
StatusPush(LinkStack&S,ElemTypee)
{
//TODO(#1#):
插入元素e作为新的栈顶
returnERROR;
//-------------------------------------
}
//S出栈用e返回出栈元素
//前提:
栈S存在且不空
StatusPop(LinkStack&S,ElemType&e)
{
//TODO(#1#):
若栈S不空,则删除栈顶元素用e返回
returnERROR;
//-------------------------------------
}
#ifdefELEMTYPE_TAG
#undefElemType
#undefELEMTYPE_TAG
#endif
#endif
实验3-2顺序栈
[目的]掌握顺序栈的实现和简单的应用。
[源代码]
/****************************************************
@title:
数据结构实验
@name:
<实验3-2>栈的顺序存储结构
@object:
[实验目的]
采用顺序存储结构实现栈的基本操作
[实验提示]
1.在stack.h中实现栈的基本操作
2.在dsp0302.cpp中编写适当的代码,进行测试
@include:
stack.h[*]
栈的顺序实现
@usage:
请查看"TO-DO列表",根据要求完成代码
@copyright:
BTC2004,ZhuangBo
@author:
ZhuangBo
@date:
2004
@description:
*****************************************************/
#include
#include
#include"stack.h"//forSqStack
//测试顺序栈的主程序
intmain()
{
SqStacks;
intx;
//输入若干正整数以0结束,依次入栈,然后依次出栈并打印
InitStack(s);
printf("输入若干正整数以0结束:
");
scanf("%d",&x);
while(x!
=0){
Push(s,x);
scanf("%d",&x);
}
printf("\n出栈结果:
");
while(!
StackEmpty(s)){
Pop(s,x);
printf("%4d",x);
}
//-------------------------------------
//TODO(#1#):
其它测试程序
//-------------------------------------
DestroyStack(s);//销毁栈
system("PAUSE");
return0;
}
/*
Name:
顺序栈的实现
Copyright:
Author:
Date:
Description:
*/
#ifndefSTACK_H_INCLUDED
#defineSTACK_H_INCLUDED
#include"ds.h"//forStatus,OK...
#ifndefElemType
#defineElemTypeint/*数据元素类型默认为int*/
#defineELEMTYPE_TAG
#endif
#defineSElemTypeElemType
///////////////////////////////////////////////////////////
//顺序栈的存储结构定义
#defineSTACK_INIT_SIZE100/*存储空间初始分配容量*/
#defineSTACKINCREMENT10/*存储空间分配的增量*/
typedefstruct{
ElemType*base;//在构造栈之前和销毁栈之后,base为NULL
ElemType*top;//栈顶指针
intstacksize;//当前已分配的存储空间(元素个数)
}SqStack;
///////////////////////////////////////////////////////////
//顺序栈的基本操作声明
//构造一个空栈S
StatusInitStack(SqStack&S);
//销毁栈S
StatusDestroyStack(SqStack&S);
//将栈S清空
StatusClearStack(SqStack&S);
//若栈S为空返回TRUE,否则FALSE
StatusStackEmpty(SqStackS);
//返回栈S中的元素个数
intStackLength(SqStackS);
//用e返回栈顶元素
//前提:
栈S存在且不空
StatusGetTop(SqStackS,ElemType&e);
//元素e入栈S
StatusPush(SqStack&S,ElemTypee);
//S出栈用e返回出栈元素
//前提:
栈S存在且不空
StatusPop(SqStack&S,ElemType&e);
///////////////////////////////////////////////////////////
//顺序栈的基本操作的实现
//构造一个空栈S
StatusInitStack(SqStack&S)
{
//TODO(#1#):
构造一个空栈S
returnERROR;
//-------------------------------------
}
//销毁栈S
StatusDestroyStack(SqStack&S)
{
//TODO(#1#):
销毁栈S,相当于清空栈
returnERROR;
//-------------------------------------
}
//将栈S清空
StatusClearStack(SqStack&S)
{
//TODO(#1#):
将栈S清空,释放所有结点
returnERROR;
//-------------------------------------
}
//若栈S为空返回TRUE,否则FALSE
StatusStackEmpty(SqStackS)
{
//TODO(#1#):
若栈S为空返回TRUE,否则FALSE
returnTRUE;
//-------------------------------------
}
//返回栈S中的元素个数
intStackLength(SqStackS)
{
//TODO(#1#):
返回栈S中的元素个数
return0;
//-------------------------------------
}
//用e返回栈顶元素
//前提:
栈S存在且不空
StatusGetTop(SqStackS,ElemType&e)
{
//TODO(#1#):
若栈S不空,则用e返回栈顶元素
returnERROR;
//-------------------------------------
}
//元素e入栈S
StatusPush(SqStack&S,ElemTypee)
{
//TODO(#1#):
插入元素e作为新的栈顶
returnERROR;
//-------------------------------------
}
//S出栈用e返回出栈元素
//前提:
栈S存在且不空
StatusPop(SqStack&S,ElemType&e)
{
//TODO(#1#):
若栈S不空,则删除栈顶元素用e返回
returnERROR;
//-------------------------------------
}
#ifdefELEMTYPE_TAG
#undefElemType
#undefELEMTYPE_TAG
#endif
#endif
/****************************************************
@title:
数据结构实验
@name:
<实验3-2>顺序栈和栈的应用
@object:
[实验目的]
实现顺序栈;实现几个栈的具体应用
[实验提示]
1.在stack.h中实现顺序栈
2.在app0302.cpp中编写栈的应用程序,
数制转换,括号匹配的检验
@include:
stack.h[*]
顺序栈模块
@usage:
请查看"TO-DO列表",根据要求完成代码
@copyright:
BTC2004,ZhuangBo
@author:
ZhuangBo
@date:
2004
@description:
*****************************************************/
#include
#include
#include"stack.h"//forSqStack
//数制转换程序
voidConversion();
//检验括号匹配
voidMatch();
intmain()
{
//数制转换程序
Conversion();
//检验括号匹配
Match();
system("PAUSE");
return0;
}
//数制转换程序
voidConversion()
{
//-------------------------------------
//TODO(#1#):
这里实现数制转换程序
//-------------------------------------
}
//检验括号匹配
voidMatch()
{
//-------------------------------------
//TODO(#1#):
这里实现检验括号匹配的程序
//-------------------------------------
}
/*
Name:
顺序栈的实现
Copyright:
Author:
Date:
Description:
*/
#ifndefSTACK_H_INCLUDED
#defineSTACK_H_INCLUDED
#include"ds.h"//forStatus,OK...
#ifndefElemType
#defineElemTypeint/*数据元素类型默认为int*/
#defineELEMTYPE_TAG
#endif
#defineSElemTypeElemType
///////////////////////////////////////////////////////////
//顺序栈的存储结构定义
#defineSTACK_INIT_SIZE100/*存储空间初始分配容量*/
#defineSTACKINCREMENT10/*存储空间分配的增量*/
typedefstruct{
ElemType*base;//在构造栈之前和销毁栈之后,base为NULL
ElemType*top;//栈顶指针
intstacksize;//当前已分配的存储空间(元素个数)
}SqStack;
///////////////////////////////////////////////////////////
//顺序栈的基本操作声明
//构造一个空栈S
StatusInitStack(SqStack&S);
//销毁栈S
StatusDestroyStack(SqStack&S);
//将栈S清空
StatusClearStack(SqStack&S);
//若栈S为空返回TRUE,否则FALSE
StatusStackEmpty(SqStackS);
//返回栈S中的元素个数
intStackLength(SqStackS);
//用e返回栈顶元素
//前提:
栈S存在且不空
StatusGetTop(SqStackS,ElemType&e);
//元素e入栈S
StatusPush(SqStack&S,ElemTypee);
//S出栈用e返回出栈元素
//前提:
栈S存在且不空
StatusPop(SqStack&S,ElemType&e);
///////////////////////////////////////////////////////////
//顺序栈的基本操作的实现
//构造一个空栈S
StatusInitStack(SqStack&S)
{
//TODO(#1#):
构造一个空栈S
returnERROR;
//-------------------------------------
}
//销毁栈S
StatusDestroyStack(SqStack&S)
{
//TODO(#1#):
销毁栈S,相当于清空栈
returnERROR;
//-------------------------------------
}
//将栈S清空
StatusClearStack(SqStack&S)
{
//TODO(#1#):
将栈S清空,释放所有结点
returnERROR;
//-------------------------------------
}
//若栈S为空返回TRUE,否则FALSE
StatusStackEmpty(SqStackS)
{
//TODO(#1#):
若栈S为空返回TRUE,否则FALSE
returnTRUE;
//-------------------------------------
}
//返回栈S中的元素个数
intStackLength(SqStackS)
{
//TODO(#1#):
返回栈S中的元素个数
return0;
//-------------------------------------
}
//用e返回栈顶元素
//前提:
栈S存在且不空
StatusGetTop(SqStackS,ElemType&e)
{
//TODO(#1#):
若栈S不空,则用e返回栈顶元素
returnERROR;
//-------------------------------------
}
//元素e入栈S
StatusPush(SqStack&S,ElemTypee)
{
//TODO(#1#):
插入元素e作为新的栈顶
returnERROR;
//-------------------------------------
}
//S出栈用e返回出栈元素
//前提:
栈S存在且不空
StatusPop(SqStack&S,ElemType&e)
{
//TODO(#1#):
若栈S不空,则删除栈顶元素用e返回
returnERROR;
//-------------------------------------
}
#ifdefELEMTYPE_T
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据结构 语言版 顺序 上机 实验