栈的定义及基本操作.docx

上传人:b****3 文档编号:5061522 上传时间:2022-12-12 格式:DOCX 页数:8 大小:57.05KB
下载 相关 举报
栈的定义及基本操作.docx_第1页
第1页 / 共8页
栈的定义及基本操作.docx_第2页
第2页 / 共8页
栈的定义及基本操作.docx_第3页
第3页 / 共8页
栈的定义及基本操作.docx_第4页
第4页 / 共8页
栈的定义及基本操作.docx_第5页
第5页 / 共8页
点击查看更多>>
下载资源
资源描述

栈的定义及基本操作.docx

《栈的定义及基本操作.docx》由会员分享,可在线阅读,更多相关《栈的定义及基本操作.docx(8页珍藏版)》请在冰豆网上搜索。

栈的定义及基本操作.docx

栈的定义及基本操作

栈的定义及基本操作

栈的定义及基本操作

在数据结构中,栈是限制在表的一端进行插入和删除的线性表。

在线性表中允许插入、删除的这一端称为栈顶,栈顶的当前位置是动态变化的,这样我们只能在栈顶对栈进行操作;不允许插入和删除的另一端称为栈底,栈底是固定不变得,当表中没有元素时称为空栈。

对栈的常用操作有:

栈初始化:

Init_Stack()初始条件:

栈不存在操作结果:

构造了一个空栈

判断空:

Empty_Stack()若栈空,则返回为1,否则返回0

入栈:

Push_Stack(S,x)初始条件:

栈S已经存在操作结果:

在栈S的顶部插入一个元素x,这样x就、成为新的栈顶元素。

出栈:

Pop_Stack(S,&x)初始条件:

栈S存在且不为空操作结果:

栈S的顶部元素从栈顶删除,保存在变量x中

取栈顶元素:

GetTop_Stack(S)初始条件:

栈s存在且不为空操作结果:

返回栈S的栈顶元素,且原栈的结构不会变化

销毁栈:

Destory_Stack(S)初始条件:

if(S->top==STACKSIZE-1)

return0;

else{

S->top++;

S->data[S->top]=x;

return1;

}

}

intPop_SeqStack(PSeqStackS,int*x)

{

if(Empty_SeqStack(S)==1)

return0;

else{

*x=S->data[S->top];

S->top--;

return1;

}

}

intGetTop_SeqStack(PSeqStackS)

{

if(Empty_SeqStack(S)==1){

printf("EmptyStack!

\n");

return-1;

}

else

returnS->data[S->top];

}

intDestory_SeqStack(PSeqStack*S)

{

if(*S){

free(*S);

*S=NULL;

return1;

}

return0;

}

intmain()

{

PSeqStacks;

intx=0;

s=Init_SeqStack();

Push_SeqStack(s,1);

Push_SeqStack(s,2);

Push_SeqStack(s,3);

Push_SeqStack(s,4);

printf("Top:

%d",GetTop_SeqStack(s));

Destory_SeqStack(&s);

return1;

}

链式存储

栈的链式存储一般用单链表来实现,实现代码如下:

#include

#include

#include

#defineSTACKSIZE100

typedefstructLinkStack{

intdata;

structLinkStack*next;

}LinkStackNode,*PLinkStackNode;

typedefstruct{

PLinkStackNodetop;

}LinkStack,*PLinkStack;

PLinkStackInit_LinkStack()

{

PLinkStacks;

s=(PLinkStack)malloc(sizeof(LinkStack));

if(s)

s->top=NULL;

returns;

}

intEmpty_LinkStack(PLinkStackS)

{

if(S->top==NULL)

return1;

elsereturn0;

}

intPush_LinkStack(PLinkStackS,intx)

{

PLinkStackNodep;

p=(PLinkStackNode)malloc(sizeof(LinkStackNode));

if(p!

=NULL){

p->data=x;

p->next=S->top;

S->top=p;

return1;

}else

return0;

}

intPop_LinkStack(PLinkStackS,int*x)

{

PLinkStackp;

if(Empty_LinkStack(S)==1)

return0;

else{

p=S;

*x=S->top->data;

S->top=S->top->next;

free(p);

return1;

}

}

intGetTop_LinkStack(PLinkStackS)

{

if(Empty_LinkStack(S)==1){

printf("EmptyStack!

\n");

return-1;

}

else

returnS->top->data;

}

intDestory_LinkStack(PLinkStack*S)

{

PLinkStackNodep,q;

if(*S){

p=(*S)->top;

while(p){

q=p;

p=p->next;

free(q);

}

free(*S);

}

*S=NULL;

return1;

}

intmain()

{

PLinkStacks;

intx=0;

s=Init_LinkStack();

Push_LinkStack(s,1);

Push_LinkStack(s,2);

Push_LinkStack(s,3);

Push_LinkStack(s,6);

printf("Top:

%d",GetTop_LinkStack(s));

Destory_LinkStack(&s);

return1;

}

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 法律文书 > 调解书

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1