Skip to content

Latest commit

 

History

History
118 lines (91 loc) · 1.6 KB

二叉树用的栈.md

File metadata and controls

118 lines (91 loc) · 1.6 KB

Stack.h

#pragma once

#include <stdio.h>
#include <stdlib.h>
#include <assert.h>

#define MAX_SIZE 10

//typedef int DataType;


typedef char BTDataType;
typedef struct BinTreeNode
{
	struct BinTreeNode *pLeft;
	struct BinTreeNode *pRight;
	BTDataType _data;
}BTNode, *PBTNode;

typedef PBTNode DataType;


typedef struct Stack
{
	DataType _array[MAX_SIZE];
	int _size;
}Stack, *PStack;

void StackInit(PStack s);					//栈的初始化
void StackPush(PStack s, DataType data);	//入栈
void	 StackPop(PStack s);					//出栈
DataType StackTop(PStack s);				//查看栈顶数据
int StackSize(PStack s);					//查看当前栈里的元素个数
int StackEmpty(PStack s);					//检查栈是否为空
void StackPrint(PStack s);				//打印栈中元素

Stack.c

#include "Stack.h"


//栈的初始化
void StackInit(PStack s)
{
	assert(s);
	s->_size = 0;
}


//入栈
void StackPush(PStack s, DataType data)
{
	assert(s);
	if (10 == s->_size)				//栈已满
		return;
	s->_array[s->_size] = data;
	s->_size++;
}

//出栈
void	 StackPop(PStack s)
{
	assert(s);
	if (0 == s->_size)
		return;
	s->_size--;
}


//查看栈顶数据
DataType StackTop(PStack s)
{
	assert(s);
	if (0 == s->_size)
	{
		exit(EXIT_FAILURE);
	}
	return s->_array[s->_size - 1];
}

//查看当前栈里的元素个数
int StackSize(PStack s)
{
	assert(s);

	return s->_size;
}

//检查栈是否为空
int StackEmpty(PStack s)
{
	if (0 == s->_size)
		return 1;

	return 0;
}

//打印
void StackPrint(PStack s)
{
	assert(s);
	if (0 == s->_size)
		return;
	for (int i = 0; i < s->_size; i++)
	{
		printf("%d->", s->_array[i]);
	}
	putchar('\n');
}