栈的基本功能C语言实现
Posted 银背欧尼酱
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了栈的基本功能C语言实现相关的知识,希望对你有一定的参考价值。
pra.c
#include "pra.h"
#include <stdio.h>
#include <malloc.h>
#include <assert.h>
//栈的初始化
void StackInit(Stack* ps)
{
ps->array = (Stack*)malloc(sizeof(Stack) * 6);
ps->capacity = 6;
ps->size = 0;
}
//插入元素
void StackPush(Stack* ps, DataType data)
{
assert(ps);
if (ps->size==ps->capacity)
{
ps->array = (DataType*)realloc(ps->array, sizeof(DataType) * ps->capacity * 2);
ps->capacity = ps->capacity * 2;
}
ps->array[ps->size] = data;
ps->size += 1;
}
//删除元素
void StackPop(Stack* ps)
{
assert(ps);
if (StackEmpty==1)
return NULL;
(ps->size)-=1;
}
//返回栈顶元素
DataType StackTop(Stack* ps)
{
assert(ps);
return ps->array[(ps->size) - 1];
}
//判断栈中元素个数
int StackSize(Stack* ps)
{
assert(ps);
return ps->size;
}
//判断栈是否为空,空就返回1,非空返回0
int StackEmpty(Stack* ps)
{
assert(ps);
if (0 == ps->size)
return 1;
return 0;
}
//销毁栈
void StackDestroy(Stack* ps)
{
assert(ps);
free(ps->array);
ps->capacity = 0;
ps->size = 0;
}
/测试函数/
void TestStack()
{
Stack s;
StackInit(&s);
StackPush(&s, 1);
StackPush(&s, 2);
StackPush(&s, 3);
StackPush(&s, 4);
StackPush(&s, 5);
StackPush(&s, 6);
StackPush(&s, 7);
printf("size = %d\\n", StackSize(&s));
printf("top = %d\\n", StackTop(&s));
StackPop(&s);
StackPop(&s);
StackPop(&s);
printf("size = %d\\n", StackSize(&s));
printf("top = %d\\n", StackTop(&s));
StackDestroy(&s);
}
pra.h
#pragma once
typedef int DataType;
typedef struct Stack
{
DataType* array;//用数组来模拟栈的特点
int capacity;//表示栈的容量
int size; // 表示栈中有多少个元素---栈顶
}Stack;
void StackInit(Stack* ps);
void StackPush(Stack* ps, DataType data);
void StackPop(Stack* ps);
DataType StackTop(Stack* ps);
int StackSize(Stack* ps);
int StackEmpty(Stack* ps);
void StackDestroy(Stack* ps);
//
void TestStack();
以上是关于栈的基本功能C语言实现的主要内容,如果未能解决你的问题,请参考以下文章