数据结构基础之栈

栈:遵行先进后出    

对栈的数据结构的定义保存在SeqStack.h中,代码如下:

#define StackSize 100
typedef struct
{//线性
	DataType stack[StackSize];
	int top;
}SeqStack;

void InitStack(SeqStack *s)
{//初始化栈
	s->top=0;
}
int StackEmpty(SeqStack s)
{//判断栈是否为空,为空返回1,否则返回0
	if(s.top==0)
		return 1;
	else
		return 0;
}

int GetTop(SeqStack s,DataType *e)
{//取栈顶元素,将栈顶元素返回给e,1成功,0失败
	if(s.top<=0)
	{
		printf("栈已空!\n");
		return 0;
	}
	else
	{
		*e=s.stack[s.top-1];
		return 1;
	}
}

int PushStack(SeqStack *s,DataType e)
{//将元素e压栈,成功返回1,否则为0
	if(s->top>=StackSize)
	{
		printf("栈已满!\n");
		return 0;
	}
	else
	{
		s->stack[s->top]=e;  //元素e进栈
		s->top++;
		return 1;
	}
}

int PopStack(SeqStack *s,DataType *e)
{//出栈
	if(s->top==0)
	{
		printf("站中无元素\n");
		return 0;
	}
	else
	{
		s->top--;
	*e=s->stack[s->top];  //元素e出栈
	return 1;
	}
}

int StackLength(SeqStack s)
{//求栈的长度
	return s.top;
}

void ClearStack(SeqStack *s)
{
	s->top==0;
}
利用顺序栈,将元素A,B,C,D,E,F依次进栈,然后将F和E出栈,再将G和H进栈,最后全部元素出栈,代码如下:

#include"stdio.h"
#include"stdlib.h"
typedef char DataType;
#include"SeqStack.h"
void main()
{
	SeqStack s;
	int i;
	DataType a[]={'A','B','C','D','E','F'};
	DataType e;
	InitStack(&s);
	for(i=0;i
参考:《数据结构》——陈锐

                                                                                                                                                                                                                              

你可能感兴趣的:(数据结构与算法)