学习数据结构第二天,继续冲!
栈的操作分为:栈的 创建,入栈,出栈,栈的输出。
栈定义时,为一个结构体,定义一个栈顶,一个栈底,但是栈底基本不动,还要定义一个存储数据的线性表。
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
typedef struct
{
char data[100];
int top;
int bottom;
}stack;
//栈的创建,就是分配空间加初始化
stack *StackCreate()
{
stack *p=(stack*)malloc(sizeof(stack));
p->top=p->bottom=0;
return p;
}
//入栈
void StackInput(stack *p,char str)
{
p->data[p->top]=str;
p->top++;
}
//出栈
char StackOutput(stack *p)
{
if(p->top!=p->bottom)
{
p->top--;
return p->data[p->top];
}
}
//栈的输出
void StackPrint(stack *p)
{
while(p->bottom!=p->top)
{
printf("%c",p->data[p->top-1]);
p->top--;
}
}
int main()
{
stack *p;
char a[10]="asdfg";
p=StackCreate();
int i;
for(i=0;i<strlen(a);i++)
{
StackInput(p,a[i]);
}
printf("输出栈中所有字符");
StackPrint(p);
return 0;
}