第三章栈和队列;单击此处添加大标题内容;3.1栈(Stack)
;3.1.1栈的相关概念
;;2.栈的基本运算
线性表有许多基本运算,但栈作为操作受限的特殊线性表,其基本运算相对较少,主要包括:
InitialStack(s):构造一个空栈s
FreeStack(s):释放栈s占用的存储空间
IsEmpty(s):判断栈s是否为空,为空则返回真,否则返回假
Push(s,e):将元素e入栈,即存储到栈顶的位置,并作为新的栈顶元素
Pop(s,e):将栈顶元素赋值给变量e,并使栈顶指针top自减1(逻辑上删除栈顶元素)
GetTop(s,e):将栈顶元素赋值给变量e;3.1.2栈的顺序存储结构;栈的基本操作;;InitialStack(s):构造一个空栈s
voidInitialStack(SqStack*s)
{
s=(SqStack*)malloc(sizeof(SqStack));
s-top=-1;
};//以下代码采用易于理解的形式
boolIsEmpty(SqStack*s)
{
if(s-top==-1)
returntrue;
else
returnfalse;
}
//以下代码采用简洁精炼的形式
boolIsEmpty(SqStack*s)
{
return(s-top==-1);
}
;//易于理解形式
boolPush(SqStack*s,ELEMTYPEe)
{
if(s-top==MaxNum-1)
returnfalse;
else
{
s-top++;
s-data[s-top]=e;
returntrue;
}
}
;//易于理解形式
boolPop(SqStack*s,ELEMTYPEe)
{
if(s-top==-1)
returnfalse;
else
{
e=s-data[s-top};
s-top--;
returntrue;
}
}
;boolGetTop(SqStack*s,ELEMTYPEE)
{
if(s-top==-1)
returnfalse;
else
{
e=s-data[s-top];
returntrue;
}
};3.1.3栈的链式存储结构;链栈的数据类型定义;InitialStack(s):构造一个空栈s
voidInitialStack(LinkStackNode*s)
{
s=(LinkStackNode*)malloc(sizeof(LinkStackNode));
s-next=NULL;
};FreeStack(s):释放栈s占用的存储空间
voidFreeStack(LinkStackNode*s)
{
LinkStackNode*pre=s,*p=s-next;
while(p!=NULL)
{
free(pre);
pre=p;
p=pre-next;
}
free(pre);
};IsEmpty(s):判断栈s是否为空,为空则返回真,否则返回假
//易于理解形式
boolIsEmpty(LinkStackNode*s)
{
if(s-next==NULL)
returntrue;
else
returnfalse;
}
//简洁精炼形式
boolIsEmpty(LinkStackNode*s)
{
return(s-next==NULL);
};Push(s,e):将元素e入栈,即存储到栈顶的位置,并作为新的栈顶元素
对于链栈来说,无需判断其是否栈满,所以其无需返回值
voidPush(LinkStackNode*s,ELEMTYPEe)
{
LinkStackNode*p=(LinkStackNode*)malloc(sizeof(LinkStackNode));
p-data=e;
p-next=s-next;
s-next=p;
};Pop(s,e):将栈顶元素赋值给变量e,然后删除之
//易于理解形式
boolPop(LinkStackNode*s,ELEMTYPEe)
{
LinkStackNode*p;
if(s-next!=NULL)
{
p=s-next;
e=p-data;
s-next=p-next;
free(p);
returntrue;
}
else
returnfalse;
}
;GetTop(s,e):将栈顶元素赋值给变量e
//易于理解形式
boolGetTop(LinkStackNode*s,ELEMTYPEe)
{
if(s-next!=NULL)
{
e=s-next-data;
returntrue;
}
else
returnfalse;
}
;共享栈
您可能关注的文档
- 电子元器件工程项目管理 课件 第八章 创新管理 课件.pdf
- 电子元器件工程项目管理 课件 第二章 组织管理 课件.pdf
- 电子元器件工程项目管理 课件 第九章 管理实例 课件.pdf
- 电子元器件工程项目管理 课件 第六章 风险管理 课件.pdf
- 电子元器件工程项目管理 课件 第七章 沟通管理 课件.pdf
- 电子元器件工程项目管理 课件 第三章 成本管理 课件.pdf
- 电子元器件工程项目管理 课件 第四章 进度管理 课件.pdf
- 电子元器件工程项目管理 课件 第五章 质量管理 课件.pdf
- 电子元器件工程项目管理 课件 第一章 管理理论 课件.pdf
- 数据结构 课件 第1章 绪论(1什么是数据结构) .pptx
- 2026届河南省郑州市高三上学期一模政治(解析版).docx
- 2026届河南省郑州市高三上学期第一次质量预测历史(原卷版).docx
- 2026届河北省名校联合体高三上学期一模政治(原卷版).docx
- 广东省茂名市信宜市2025-2026学年高二上学期11月期中考试政治(原卷版).docx
- 2026年高一上学期语文期末考试压轴卷含答案.docx
- 河北省部分示范性高中2025-2026学年高一12月考试语文试题含答案.docx
- 考研真题 首都师范大学历史学院776历史学基础综合历年考研真题汇编(含部分答案).pdf
- 考研真题 首都师范大学文学院445汉语国际教育基础[专业硕士]历年考研真题汇编(含部分答案).pdf
- 《护士条例》 辅导讲座.pptx
- 牙科医师质控的年度工作述职.pptx
原创力文档

文档评论(0)