#include<stdio.h>
#include<stdlib.h>
typedef struct
{
int* elements;
int size;
int capacity;
}stack;
void StackInit(stack* stk, int capacity);
void StackDestory(stack* stk);
void StackPush(stack* stk, int elem);
int StackPop(stack* stk);
int StackTop(stack* stk);
void StackInit(stack* stk, int capacity)
{
stk->capacity = capacity;
stk->size = 0;
stk->elements = (int*)malloc(sizeof(int) * capacity);
}
void StackDestory(stack* stk)
{
if (stk->elements)
free(stk->elements);
stk->elements = NULL;
stk->size = 0;
stk->capacity = 0;
}
void StackPush(stack* stk,int elem)
{
int* new_elements;
int i;
// 满了则需要扩容
if (stk->size == stk->capacity)
{
stk->capacity *= 2;
new_elements = (int*)malloc(sizeof(int) * stk->capacity);
for (i = 0; i < stk->size; i++)
new_elements[i] = stk->elements[i];
free(stk->elements);
stk->elements = new_elements;
}
stk->elements[stk->size++] = elem;
}
int StackPop(stack* stk)
{
if (stk->size == 0)
{
printf("no elements\n");
exit(EXIT_FAILURE);
}
return stk->elements[--stk->size];
}
int StackTop(stack* stk)
{
if (stk->size == 0)
{
printf("no elements\n");
exit(EXIT_FAILURE);
}
return stk->elements[stk->size - 1];
}
基础数据结构——顺序栈代码实现C
最新推荐文章于 2024-09-28 20:31:26 发布