栈的基本功能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语言实现的主要内容,如果未能解决你的问题,请参考以下文章

C语言实现顺序栈的基本操作举例

C语言实现栈的基本操作

数据结构C语言版 —— 栈的实现

数据结构-栈

栈的代码实现之数组方案

C语言实现数据结构之栈的详解