C语言之栈学习

本文详细介绍了栈这一数据结构的基本概念,包括栈顶、栈底等关键术语,并解释了栈作为后进先出(LIFO)表的特点。同时,文中提供了栈的基本操作如初始化、入栈、出栈和获取栈顶元素的实现方式,并通过C语言具体说明了顺序栈的存储特性和实现细节。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

基本概念
(STACK) ——一种限定性的数据结构,限定只能在表的一端进行插入和删除的线性表。
栈顶(TOP)——允许插入和删除的一端
栈底(BOTTOM)——不允许插入和删除的一端
栈是后进先出表(LIFO)
 
基本操作:
     InitStacK (s)设置一个空栈s
     StackEmpty (s)判断s是否是空栈。
        如果栈空返回1,非空返回0
     Push(sx)入栈操作;
     在栈s中插入一个新的栈顶元素x
     Pop(s)出栈函数;删除栈顶元素。
     GetTop (s)读取栈顶元素
     若栈为空,返回空值。
 
栈类型的实现
 
顺序栈——顺序表存储
链栈——链式存储
 
顺序栈
 
存储特点
利用一组地址连续的存储单元依次存放自栈底到栈顶的数据元素
c语言中可用数组来实现顺序栈
设置栈顶指针Top
 
 
 
顺序栈的 C语言描述
 
# define  MAXLEN   栈可能达到的最大长度
typedef  struct {
   ElemType   elem[MAXLEN]//数组空间
   int   top
 } SqStack ;
 
第一个操作:创建栈
 status InitStack (SqStack *S)
 {
   S->top = -1;
   return OK;
 }
 
第二个操作:进栈
将元素x压入栈s中
status  Push(SqStack *s,ElemType  e){
   if(s.top = = MAXLEN-1)
		return    ERROR ;//栈满
	else   { s->top++;
                     s->elem[s->top]=  x ;
                     return  OK;}
} //push

第三个操作:出栈
 
 ElemType   Pop(SqStack  * s) {
       if (s->top ==  -1)return (空元素);
       else  {
           x=  s.elem[s.top];   
           s.top -- ;   
           return(x) 
 	    }
     }  // Pop

 
 
 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值