- 什么是栈,栈有什么特性?
栈,一种特殊的线性表,其只允许在固定的一端进行插入和删除元素的操作.进行数据插入和删除的一端称为栈顶,另一端称为栈底.插入的操作称为入栈/进栈/压栈,删除操作称为出栈,插入和删除的操作都在栈顶.
栈中的数据遵循后进先出原则(Last In First Out) - 用C语言实现一个动态栈
栈结构以及主要功能
#pragma once
#include <stdio.h>
#include <assert.h>
#include <malloc.h>
#define SIZE 5
typedef int SDataType;
typedef struct Stack {
SDataType* arr;
int capaciity;
int size;
}Stack;
//栈的初始化
void StackInit(Stack* ps);
//入栈
void StackPush(Stack* ps, SDataType data);
//出栈
void StackPop(Stack* ps);
//获取栈顶元素
SDataType StackTop(Stack* ps);
//获取栈中元素个数
int StackSize(Stack* ps);
//判断栈是否为空
int StackEmpty(Stack* ps);
//销毁栈
void StackDestroy(Stack* ps);
//栈空间扩容
void BuySpace(Stack* ps);
栈主要功能的实现:
#include "Stack.h"
void StackInit(Stack* ps) {
assert(ps);
ps->arr = (SDataType*)malloc(5 * sizeof(SDataType));
if (ps->arr == NULL) {
assert(0);
return;
}
ps->capaciity = 5;