栈的基本操作

//////.h
#define MAX_SIZE 1024
typedef int DataType; 
typedef struct Stack 
{ 
	DataType _array[MAX_SIZE]; 
	int _top; // 表示有效元素个数 表示栈顶位置 
//	int _capacity; // 底层空间的总大小 
}Stack; 

void StackInit(Stack* s); 

// 入栈 
void StackPush(Stack* s, DataType data); 

// 出栈 
void StackPop(Stack* s); 

// 获取栈顶元素 
DataType StackTop(Stack* s); 

// 有效元素的个数 
int StackSize(Stack* s); 

// 检测栈是否为空 
int StackEmpty(Stack* s); 

#include"Stack.h"
#include<assert.h>
#include<stdio.h>

void StackInit(Stack* s)
{
	assert(s);
	s->_top = 0;
} 

// 入栈 
void StackPush(Stack* s, DataType data)
{
	assert(s);
	if(MAX_SIZE == s->_top)
		printf("栈已满,放不了!!!");
	s->_array[s->_top++] = data;

}

// 出栈 
void StackPop(Stack* s)
{
	if(StackEmpty(s))
		return;
	s->_top--;
}

// 获取栈顶元素 
DataType StackTop(Stack* s)
{
	assert(s);
	assert(!StackEmpty(s));
	return s->_array[s->_top-1];
}

// 有效元素的个数 
int StackSize(Stack* s)
{
	assert(s);
	return s->_top;
}

// 检测栈是否为空 
int StackEmpty(Stack* s)
{
	assert(s);
	return s->_top == 0;
}


/////.c


void TestStack()
{
	Stack s;
	StackInit(&s);
	StackPush(&s,1);
	StackPush(&s,2);
	StackPush(&s,3);
	StackPush(&s,4);
	StackPush(&s,5);
	printf("top = %d\n",StackTop(&s));
	printf("Size = %d\n",StackSize(&s));
	StackPop(&s);
	StackPop(&s);
	printf("top = %d\n",StackTop(&s));
	printf("Size = %d\n",StackSize(&s));
}
int main()
{
	TestStack();
	system("pause");
	return 0;
}
阅读更多

没有更多推荐了,返回首页