数据结构 课件 第3章 栈和队列.pptx

第三章栈和队列;单击此处添加大标题内容;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;

}

;共享栈

您可能关注的文档

文档评论(0)

1亿VIP精品文档

相关文档