数据结构-栈和队列-顺序链

孤街浪徒 提交于 2020-03-03 06:00:56

  • 是一种特殊的线性表,对于这种线性表规定他的插入运算和删除运算均在线性表的同一端进行,进行插入和删除的那一端称为栈顶,另一端称为栈底。栈的插入操作也分别简称进栈出栈
    如果栈中由n个结点{k1,k2,…kn},称k1为栈底,kn为栈顶
    栈具有后进先出先进后出(FILO)的性质。
    在这里插入图片描述
  • 顺序栈
    一般的,可以设置一个足够大的移位数组存储栈,数组中下标为0元素的就是栈底,对于栈顶,可以设一个指针top指示它。
    在这里插入图片描述
栈的顺序存储结构

#define MAXSIZE	100
typedef int datatype;
typedef struct{
	datatype a[MAXSIZE];
	int top;
	}
sequce_stack;
sequce_stack st;

  • 栈的初始化
viod init(sequce_stack *st)
{
	st->top=0;
}
  • 判断栈是否为空
int empty(aequce_stack st)
{
	ruturn(st.top?0:1);
}
  • 取栈顶结点值
datatype read(sequence_stack st)
{
	if(empty(st))
	{
		printf("栈是空的!\n")
		exit(1);
	}
	else
		return st.a[st.top-1];
}
  • 进栈操作
    在这里插入图片描述
int push(sequence_stack *st,datatype)
{
	if(st->top==MAXSIZE)
	{
		return 0;
	}
	st->a[st->top]=x;
	st->top++;
	return 1;
}
  • 出栈操作
    在这里插入图片描述
int pop(sequence_stack *st)
{
	if(st->top==0)
	{
		return 0;
	}
	st->top--;
	return 1;
}
标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!