C语言实现的顺序栈
c语言实现的顺序栈包括一些基本操作
#include<stdio.h>
#include<stdlib.h>
//顺序栈
typedef struct book
{
char name[10];
float price;
}book;
typedef book Book;
typedef struct Stack
{
Book *data;
int top;
}Stack;
//初始化
void InitStack(Stack *S)
{
S->data=(Book*)malloc(sizeof(Book));
// S=(Stack*)malloc(sizeof(Stack));
if (!S->data)
{
printf("初始化失败!\n");
exit(1);
}
S->top=-1;
printf("初始化成功!\n");
}
//入栈
void Push(Stack *S,Book b)
{
S->top++;
S->data[S->top]=b;
}
//出栈
Book Pop(struct Stack *S)
{
Book b;
b=S->data[S->top];
S->top--;
return b;
}
//判断栈空
void isEmpty(Stack *S)
{
if (S->top==NULL)
{
printf("栈不存在!\n");
exit(1);
}
if (S->top==-1)
{
printf("栈为空!\n");
}
printf("栈非空!\n");
}
//销毁
void Destroy(Stack *S)
{
free(S->data);
S->top=NULL;
printf("成功销毁!\n");
return;
}
void main()
{
int i,k;
Stack S,*p;
p=&S;
Book b;
InitStack(&S);
//Push两个元素
for (i=0;i<2;i++)
{
printf("请输入书本的name和price:\n");
scanf("%s%f",&b.name,&b.price);
Push(&S,b);
}
//Pop全部元素
k=1;
while (p->top!=-1)
{
Book b1=Pop(&S);
printf("出栈的第%d个元素:name: %s ,price: %f \n",k++,b1.name,b1.price);
}
Destroy(&S);
isEmpty(&S);
}