栈 的 顺 序 表 示 和 实 现
实验目的
了解栈和队列的特性。
掌握栈的顺序表示和实现。
掌握栈的链式表示和实现。
掌握队列的顺序表示和实现。
掌握队列的链式表示和实现。
掌握栈和队列在实际问题中的应用。
实验要求
认真阅读和掌握本实验的程序。
2. 上机运行本程序。
3. 保存和打印出程序的运行结果,并结合程序进行分析。
4. 按照对顺序表和单链表的操作需要,重新改写主程序并运行,打印出文件清单和运行结果。
三、实验内容
编写一个程序实现顺序栈的各种基本运算,并在此基础上设计一个主程序完成如下功能:
初始化顺序栈。
插入元素。
删除栈顶元素。
取栈顶元素。
遍历顺序栈。
置空顺序栈。
四,解题思路
程序清单
#include
#include
#define MAXNUM 20
#define ElemType int
/*定义顺序栈的存储结构*/
typedef struct
{ ElemType stack[MAXNUM];
int top;
}SqStack;
/*初始化顺序栈*/
void InitStack(SqStack *p)
{ if(! p)
printf("内存分配失败!");
p->top=-1;
}
/*入栈*/
void Push(SqStack *p,ElemType x)
{ if(p->toptop=p->top+1;
p->stack[p->top]=x;
}
else
printf("Overflow!\n");
}
/*出栈*/
ElemType Pop(SqStack *p)
{ ElemType x;
if(p->top>=0)
{ x=p->stack[p->top];
printf("以前的栈顶数据元素%d已经被删除!\n",p->stack[p->top]);
p->top=p->top-1;
return(x);
}
else
{ printf("Underflow!\n");
return(0);
}
}
/*获取栈顶元素*/
ElemType GetTop(SqStack *p)
{ ElemType x;
if(p->top>=0)
{ x=p->stack[p->top];
printf("\n栈顶元素喂:%d\n",x);
return(x);
}
else
{ printf("Underflow!\n");
return(0);
}
}
/*遍历顺序栈*/
void OutStack(SqStack *p)
{ int i;
printf("\n");
if(p->top<0)
printf("这是一个空栈!");
printf("\n");
for(i=p->top;i>=0;i--)
printf("第%d个数据元素是:%6d\n",i,p->stack[i]);
}
/*置空顺序栈*/
void setEmpty(SqStack *p)
{ p->top=-1;}
/*主函数*/
void main()
{ SqStack *q;
int cord;ElemType a;
printf("第一次使用必须初始化!\n");
do{
printf("\n");
printf("\n----------主菜单-----------\n");
printf("\n 1 初始化顺序栈 \n");
printf("\n 2 插入一个元素 \n");
printf("\n 3 删除栈顶元素 \n");
printf("\n 4 取栈顶元素 \n");
printf("\n 5 置空顺序栈 \n");
printf("\n 6 结束程序运行 \n");
printf("\n-----------------------------\n");
printf("清输入您的选择(1,2,3,4,5,6)");
scanf("%d",&cord);
printf("\n");
switch(cord)
{ case 1:
{ q=(SqStack *)malloc(sizeof(SqStack));
InitStack(q);
OutStack(q);
}break;
case 2:
{ printf("清输要插入的元素:a=");
scanf("%d",&a);
Push(q,a);
OutStack(q);
}break;
case 3:
{ Pop(q);
OutStack(q);
}break;
case 4:
{ GetTop(q);
OutStack(q);
}break;
case 5:
{ setEmpty(q);
printf("\n顺序栈被置空!\n");
OutStack(q);
}break;
case 6:
exit(0);
}
}while(cord<=6);
}
调试心得及收获
其他所想到的
本文档为【栈和队列实验报告】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑,
图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。