数据结构-线性表-栈

    栈,是一种只能在表尾进行插入或删除操作的线性表。按照先进后出的原则储存数据。先进入的数据被压入栈底,最后的数据在栈顶,需要读数据的时候从栈顶开始弹出数据。

    

栈的相关概念:

  1. 栈顶与栈底:允许元素插入与删除的一端称为栈顶,另一端称为栈底。
  2. 压栈:栈的插入操作,叫做进栈,也称压栈、入栈。
  3. 弹栈:栈的删除操作,也叫做出栈

栈的相关操作:

  1. 弹栈,通常命名为pop
  2. 压栈,通常命名为push
  3. 求栈的大小
  4. 判断栈是否为空
  5. 获取栈顶元素的值

  压栈,通常命名为push

    在网上找的图:

    

   

    代码如下:

void Push(sqStack *s, ElemType e)
{
	if(s->top - s->base >=STACK_INIT_SIZE)
	{
		s->base = (ElemType *)realloc(s->base,(s->stackSize + STACKINCREMENT )* sizeof(ElemType));
		if(!s->base)
		{
			exit(0);
		}
	}
	*(s->top)=e;
	s->top++;
}

    弹栈,通常命名为pop


    


代码如下:

void Pop(sqStack *s,ElemType *e)
{
	if(s->top==s->base)
	{
		return;
	}
	*e =*--(s->top);
}

    栈的长度:

int StackLen(sqStack s)
{
	return (s.top - s.base);
}

剩下的操作比较简单,把判断栈是否为空的代码放在pop和push的中间,

猜你喜欢

转载自blog.csdn.net/qq_40452317/article/details/80550173