2018/3/3
数据结构
1.头文件
/*在头文件中自定义函数的原型,和相关结构体*/
/*对顺序栈相关操作*/
#include<stdio.h>//C语言标准输入输出流
/*顺序栈的结构体模型*/
typedef int Datatype;
#define Maxsize 100
typedef struct
{
Datatype data[Maxsize];
int top;
}sqstack;
/*1.初始化栈*/
void initStack(sqstack *S)
{
S->top = 0;
}
/*2.判断是否为空栈*/
int isNotEmptyStack(sqstack S)
{
if (S.top <= 0)
{
printf("\n该栈为空栈\n");
return 0;
}
else
return 1;
}
/*3.入栈*/
int stackPush(sqstack *S, Datatype x)
{
if (S->top >= Maxsize)
{
printf("该栈已经满了,无法增加数字\n");
return 0;
}
else
{
S->data[S->top] = x;//将数字插入栈
S->top++;
return 1;
}
}
/*4.出栈*/
int stackPop(sqstack *S, Datatype *d)
{
if (S->top <= 0)
{
printf("该栈已空,无法删除");
return 0;
}
else
{
S->top--;
*d = S->data[S->top];
}
}
/*实现取栈顶元素*/
int stackTop(sqstack S,Datatype *d)
{
if (S.top <= 0)
{
printf("该栈已经空了");
return 0;
}
else
{
*d = S.data[S.top - 1];
return 1;
}
}
2.源文件
/*对于顺序栈的操作*/
#include<stdio.h>
#include<stdlib.h>
#include"sqStack.h"
typedef int DataType;
#define Maxsize 100//顺序栈的缺点之一,浪费空间
/*主函数*/
void main()
{
sqstack S;
int size,i,num;
printf("请输入栈的规格\n");
scanf_s("%d", &size);
initStack(&S);//初始化栈
printf("请输入入栈数据\n");
for (i = 0; i < size; i++)
{
scanf_s("%2d", &num);
stackPush(&S, num);//入栈
}
stackTop(S, &num);
printf("栈顶元素为%2d\n", num);
printf("出栈元素为:");
for (i = 0; i < size; i++)
{
stackPop(&S, &num);
printf("%2d",num);
}
system("pause");
}