#include "stdio.h"
#include "malloc.h"
#include "stdlib.h"
#define maxsize 100
//顺序栈结构体定义
typedef int ElemType;
typedef struct Stack
{
ElemType Stack[maxsize];
int top;
//*struct Stack *rear;*//
}Stack;
//初始化
void InitStack (Stack *s)
{
s->top=0;
}
//判栈栈S是否为空
int StackEmpty (Stack s)
{
if(s.top==0)
return 1;
else
return 0;
}
//入栈
void StackPush(Stack *s,ElemType a)
{
if(s->top==maxsize-1)
{
exit (0);
}
else
{
s->top++;
s->Stack[s->top]=a;
}
}
//出栈
void StackPop (Stack *s,ElemType *b)
{
if(StackEmpty (*s))
printf("空stack");
else
*b=s->Stack[s->top--];
}
//获取栈顶元素内容
void GetTop (Stack s,ElemType *b)
{
if(StackEmpty(s))
printf("空stack");
else
*b=s.Stack[s.top];
}
/*创建一个顺序栈myStack,首先依次向栈压入数据元素1,2,...,10,然后依次输出堆栈中的数据元素并显示。*/
int main()
{
int i=1,a;
Stack myStack;
InitStack (&myStack);
for (i=1;i<=10;i++)
StackPush(&myStack,i);
while(!StackEmpty (myStack))
{
StackPop(&myStack,&a);
printf("元素%d\n",a);
}
}
一、实验目的和要求
1)掌握使用CodeBlooks软件上机调试程序的基本方法;
(2)掌握顺序栈的基本操作:初始化、判断栈空、入栈、出栈、获得栈顶元素等运算:
3)用C语言定义描述顺序栈的结构体;
4)用C语言完成顺序栈的初始化InitStack()、判断栈空StackEmpty()、入栈Stack Push()、出栈Stack Pop()、获得栈顶元素GetTop()函数;
5)创建一个顺序栈myStack,首先依次向栈压入数据元素1,2,...,10,然后依次输出堆栈中的数据元素并显示。
二、实验原理
顺序栈的基本操作:顺序栈结构体的定义,顺序栈操作:初始化、判断栈空、入栈、出栈、获得栈顶元素运算。
三、主要仪器设备或材料
PC机,Windows XP操作平台,CodeBlooks