顺序栈和链栈的基本操作 命令选择性的测试程序Word格式文档下载.docx
- 文档编号:21371131
- 上传时间:2023-01-30
- 格式:DOCX
- 页数:20
- 大小:413.57KB
顺序栈和链栈的基本操作 命令选择性的测试程序Word格式文档下载.docx
《顺序栈和链栈的基本操作 命令选择性的测试程序Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《顺序栈和链栈的基本操作 命令选择性的测试程序Word格式文档下载.docx(20页珍藏版)》请在冰豆网上搜索。
ElemTypedata;
structlinkstack_node*next;
//链栈是由一个一个的结点构成的
}LinkStack;
//为什么要这么(用类型定义符)定义呢?
因为如果是直接用struct+新的类型名定义的话,以后如果仍然需要定义一个该结构体类型的变量
//时,在C语言中就每次都得加上struct,很麻烦,上面定义linkstack_node*next的时候就是这样,前面的struct不能省略,so……
/*******************第一部分:
顺序栈的基本操作*************/
/*********************栈的初始化***********************/
SqStack*InitSqStack()
SqStack*S;
S=(SqStack*)malloc(sizeof(SqStack));
S->
top=-1;
returnS;
}
/*********************done****************************/
/*********************判栈空***********************/
StatusEmptySqStack(SqStack*S)
if(S->
top==-1)
{
printf("
\n栈空\n"
);
returnTRUE;
}
else
\n栈不空\n"
returnFALSE;
/*********************打印栈的内容********************/
voidPrintSqStack(SqStack*S)
intn;
printf("
\n栈的当前内容:
<
栈底"
for(n=0;
n<
=S->
top;
n++)
%d"
S->
data[n]);
栈顶>
\n"
/*********************顺序栈的入栈*******************/
StatusPush_SqStack(SqStack*S,ElemTypex)
top==MAXSIZE-1)
\n栈已满\n"
returnERROR;
top++;
data[S->
top]=x;
returnOK;
/*********************顺序栈的出栈*******************/
ElemTypePop_SqStack(SqStack*S)
EmptySqStack(S);
returnS->
top--];
/*******************第二部分:
链栈的基本操作*************/
LinkStack*Init_LinkStack()
LinkStack*S;
S=(LinkStack*)malloc(sizeof(LinkStack));
next=NULL;
StatusEmpty_LinkStack(LinkStack*S)
next==NULL)
voidPrint_LinkStack(LinkStack*S)
LinkStack*p;
p=S->
next;
\n当前栈为:
栈顶"
while(p)
p->
data);
p=p->
栈底>
/*********************链栈的入栈(链表的头插入法)*******************/
StatusPush_LinkStack(LinkStack*S,ElemTypex)
LinkStack*L;
L=(LinkStack*)malloc(sizeof(LinkStack));
L->
data=x;
next=S->
next=L;
/*********************链栈的出栈*******************/
ElemTypePop_LinkStack(LinkStack*S)
L=S->
if(L)
next=L->
returnL->
data;
returnS->
/*************显示菜单********************************/
voidShow_menu()
※顺序栈操作|※链栈操作\n"
1)栈初始化|5)栈初始化\n"
2)栈判空|6)栈判空\n"
3)入栈|7)入栈\n"
4)出栈|8)出栈\n"
0)退出程序\n"
请输入要进行的操作:
"
voidmain()
LinkStack*s1;
ElemTypeR;
//必须在前面定义,程序过程中是不能定义的?
?
这个地方有点疑问,还没确定
//第一部分顺序栈的测试程序
SqStack*s;
//这个地方开始的时候是这样的:
SqStacks;
不大理解为何在栈区(编译时自动分配栈区地址)
//定义了一个再用malloc()开辟空间,然后再赋值……不大懂?
,原来正确的应该是在此处定义一个指向栈的指针,此时指针未赋值,所以……
ElemTyper;
intchoice;
intpush1=0,push2=0;
//pop初始化标志符号
while
(1)
Show_menu();
scanf("
%d"
&
choice);
if(choice==0)break;
switch(choice)
case1:
s=InitSqStack();
\n初始化完毕\n"
PrintSqStack(s);
break;
//switchcase语句中case后面有多个语句时可以不用{}括起来
case2:
EmptySqStack(s);
case3:
if(!
push1)s=InitSqStack();
//只在第一次进行入栈操作的时候执行初始化程序*******很重要的一个方法,标志法
while
(1)
{
\n请输入要入栈的值:
(输入0结束)"
scanf("
r);
if(r)
{
Push_SqStack(s,r);
push1++;
//供下面检测是否已经进行入栈操作
PrintSqStack(s);
}
else
break;
}
case4:
push1)//若开始时没有进行入栈操作,则程序自己进行入栈操作
Push_SqStack(s,100);
Push_SqStack(s,200);
Push_SqStack(s,300);
Push_SqStack(s,400);
Push_SqStack(s,500);
Push_SqStack(s,600);
Pop_SqStack(s);
push1++;
case5:
s1=Init_LinkStack();
Print_LinkStack(s1);
case6:
Empty_LinkStack(s1);
case7:
if(!
push2)s1=Init_LinkStack();
R);
if(R)
Push_LinkStack(s1,R);
Print_LinkStack(s1);
push2++;
case8:
push2)//若开始时没有进行入栈操作,则程序自己进行入栈操作
Print_LinkStack(s1);
Push_LinkStack(s1,100);
Push_LinkStack(s1,200);
Push_LinkStack(s1,300);
Push_LinkStack(s1,400);
Push_LinkStack(s1,500);
Push_LinkStack(s1,600);
Pop_LinkStack(s1);
push2++;
\n程序已退出\n"
/*//第二部分链栈的测试程序
//初始化链栈
s1=Init_LinkStack();
//判空?
Empty_LinkStack(s1);
//入栈
\n请输入你要入栈的值:
R1);
Push_LinkStack(s1,R1);
R2);
Push_LinkStack(s1,R2);
R3);
Push_LinkStack(s1,R3);
//出栈
\n\n出栈操作\n"
第一次出栈结果"
Pop_LinkStack(s1);
第二次出栈结果"
第三次出栈结果"
*/
Lc.h中的内容:
#ifndef_LC_H_
#define_LC_H_
//函数结果状态代码
constintTRUE=1;
constintFALSE=0;
constintOK=1;
constintERROR=0;
constintINFEASIBLE=-1;
constintOVERFLOW=-2;
//Status是函数的类型,其值是函数结果状态代码
typedefintStatus;
#endif//_LC_H_
结果:
按顺序来操作的顺序栈操作:
按顺序来操作的链栈操作:
不按顺序来操作的顺序栈操作:
先入栈,后出栈
直接出栈:
不按顺序来的链栈操作:
先入栈,再出栈
开始就进行链栈出栈操作:
心得:
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 顺序栈和链栈的基本操作 命令选择性的测试程序 顺序 基本 操作 命令 选择性 测试 程序
![提示](https://static.bdocx.com/images/bang_tan.gif)