栈和队列实验报告
栈 的 顺 序
表
关于同志近三年现实表现材料材料类招标技术评分表图表与交易pdf视力表打印pdf用图表说话 pdf
示 和 实 现
姓名 班级 学号
实验目的
1. 了解栈和队列的特性。
2. 掌握栈的顺序表示和实现。
3. 掌握栈的链式表示和实现。
4. 掌握队列的顺序表示和实现。
5. 掌握队列的链式表示和实现。
6. 掌握栈和队列在实际问
题
快递公司问题件快递公司问题件货款处理关于圆的周长面积重点题型关于解方程组的题及答案关于南海问题
中的应用。 二、实验要求
1. 认真阅读和掌握本实验的程序。
2. 上机运行本程序。
3. 保存和打印出程序的运行结果,并结合程序进行分析。 4. 按照对顺序表和单链表的操作需要,重新改写主程序并运行,打印出文件清
单和运行结果。
三、实验内容
编写一个程序实现顺序栈的各种基本运算,并在此基础上
设计
领导形象设计圆作业设计ao工艺污水处理厂设计附属工程施工组织设计清扫机器人结构设计
一个主程序完成
如下功能:
(1)初始化顺序栈。
(2)插入元素。
(3)删除栈顶元素。
(4)取栈顶元素。
(5)遍历顺序栈。
(6)置空顺序栈。
四,解题思路
五、程序清单
#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); }
六、调试心得及收获
了解栈和队列的特性。掌握栈的顺序表示和实现,队列的顺序表示和实现。 掌
掌握栈和队列在实际问题中的应用