#include<stdio.h>
#include<stdlib.h>
//栈,又叫堆栈,是只能在表尾插入删除的线性表
//先进后出
typedef int E;
//起个栈名
typedef struct Stack* ArrStack;
struct Stack {
E* array;
int capacity;//栈的长度
int top;//使用top来表示当前栈顶位置,存的是栈顶元素的下标
};
//创建栈
//变量栈指针
int initStack(ArrStack stack)
{
stack->capacity=10;
stack->array=malloc(sizeof(E)*stack->capacity);
if(stack->array==NULL)
{
//申请失败
return 0;
}
stack->top=-1;//没有元素默认负一
return 1;
}
//入栈
//变量栈指针,入栈元素
int pushStack(ArrStack stack,E element)
{
stack->top++;
if(stack->top==stack->capacity)
{
int NewCapacity = stack->capacity+(stack->capacity)>>1;
ArrStack stack1 = realloc(stack->array,sizeof(E)*NewCapacity);
if(stack1!=NULL)
{
stack->array=stack1;
stack->capacity=NewCapacity;
}
else
{
return 0;
}
}
stack->array[stack->top]=element;
stack->capacity++;
return 1;
}
//判断栈是否为空
//变量栈指针
int isEmpty(ArrStack stack)
{
if(stack->top!=-1)
{
return 1;
}
else
{
return 0;
}
}
//出栈
//变量栈指针
E popStack(ArrStack stack)
{
return stack->array[stack->top--];
}
int main()
{
struct Stack stack;
initStack(&stack);
for(int i = 1;i<10;i++)
{
pushStack(&stack,i*100);
printf("%d\n",stack.array[stack.top]);
popStack(&stack);
printf("%d\n",stack.array[stack.top]);
}
return 0;
}
数据结构笔记(四)顺序表实现栈
于 2024-03-11 19:06:26 首次发布