深知大多数程序员,想要提升技能,往往是自己摸索成长,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上鸿蒙开发知识点,真正体系化!
由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新
3) stacksize :当前栈可使用的内存容量,(以sizeof(ElemType)为单位)。
3.顺序栈上实现的基本运算
- 初始化
Status InitStack( SqStack &S )
{
S.base =new SElemType[MAXSIZE];
if( !S.base ) return OVERFLOW;
S.top = S.base;
S.stackSize = MAXSIZE;
return OK;
}
- 判断顺序栈是否为空
bool StackEmpty( SqStack S )
{
if(S.top == S.base) return true;
else return false;
}
- 求顺序栈的长度
int StackLength( SqStack S )
{
return S.top – S.base;
}
- 清空顺序栈
Status ClearStack( SqStack S )
{
if( S.base ) S.top = S.base;
return OK;
}
- 销毁顺序栈
Status DestroyStack( SqStack &S )
{
if( S.base )
{
delete S.base ;
S.stacksize = 0;
S.base = S.top = NULL;
}
return OK;
}
- 顺序栈进栈
Status Push( SqStack &S, SElemType e)
{
if( S.top - S.base== S.stacksize ) // 栈满
return ERROR;
S.top++=e;
return OK;
}
/
(1)判断是否栈满,若满则出错
(2)元素e压入栈顶
(3)栈顶指针加1
*/
- 顺序栈出栈
Status Pop( SqStack &S, SElemType &e)
{
if( S.top == S.base ) // 栈空
return ERROR;
e= –S.top;
return OK;
}
/(1)判断是否栈空,若空则出错
(2)获取栈顶元素e
(3)栈顶指针减1
*/
- 取顺序栈栈顶元素
Status GetTop( SqStack S, SElemType &e)
{
if( S.top == S.base ) return ERROR; // 栈空
e = *( S.top – 1 );
return OK;
}
/*判断是否空栈,若空则返回错误
否则通过栈顶指针获取栈顶元素
*/
- 栈的链式结构
typedef struct StackNode {
SElemType data;
struct StackNode *next;
} StackNode, *LinkStack;
LinkStack S;
4.链栈上实现的基本运算
- 链栈的初始化
void InitStack(LinkStack &S )
{
S=NULL;
}
- 判断链栈是否为空
Status StackEmpty(LinkStack S)
{
if (S==NULL) return TRUE;
else return FALSE;
}
深知大多数程序员,想要提升技能,往往是自己摸索成长,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上鸿蒙开发知识点,真正体系化!
由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上鸿蒙开发知识点,真正体系化!*
由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新