堆栈和队列基本函数.docx

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

一•顺序栈

1. 宏定义

#include

#include

#define MAXSIZE ****

#define datatype ****

2. 结构体

typcdcf struct

{

datatype data[MAXS!ZEJ;

int top;

}Seqstack;

3. 基本函数

Seqstack *Init_Seqstack()

/*置空栈函数(初始化)1 •先决条件:无;2 •函数作用:首先建立栈空间,然后初始化栈顶指针,返回栈s的地址*/

{

Seqstack *s;

s=(Seqstack *)malloc(sizeof(Seqstack));

s->top=-1;

return s;

}

int Empty_Seqstack(Seqstack *s)

/*判栈空函数1・先决条件:初始化顺序栈;2•函数作用:判断栈是否为空,空返回1,不空返回0可

{

if(s->top==-l) return 1;

else return 0;

}

int Push_Seqstack(Seqstack *s,datatype x)

/*入栈函数1 •先决条件:初始化顺序栈2•函数作用:将数据x入栈,栈满则不能,成功返回1,因栈满失败返回()*/

{

if(s->top==MAXSIZE-l)

return 0;

s->top=s->top+1;

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

return 1;

int Pop_Seqstack(Seqstack *s,datatype *x) 严出栈函数1 •先决条件:初始化顺序栈2•函数作用:从栈中岀一个数据,并将其存放到x中咸功返回1,因栈空失败返回0*/

{

if(s->top==-l)

return 0;

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

s->top—;

return 1;

}

int Top_Seqstack(Seqstack *s,datatype *x)

/*取栈顶元素函数1 •先决条件:初始化顺序栈2•函数作用:取栈顶元素,并把其存放到x 中,成功返回1,因栈空失败返回0*/

{

if(s->top==-l)

return 0;

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

return 1;

}

int Printf_Seqstack(Seqstack *s)

/*遍历顺序栈函数1 •先决条件:初始化顺序栈2•函数作用:遍历顺序栈,成功返回P/ {

int i,j=0;

for(i=s->top;i>=0;i-)

{

printf("%d n,s->data[i]);/*因datatype 不同而不同*/

j++;

if(j%!0==0)

printf(',\n M);

}

printf(n\n n);

return 1;

}

int Conversation_Seqstack(int N,int r)

/*数制转换函数(顺序栈)1 •先决条件:具有置空栈,入栈,出栈函数2•函数作用:将N转换为r进制的数*/

{

Scqstack *s;

datatype x;

printf(n%d转为%d进制的数为:“,N,r);/*以后可以删除去*/

s=Init_Seqstack();

do

Push_Seqstack(s$N%r);

N=N/r;

}whilc(N);

while(Pop_Seqstack(s,&x))

{

if(x>=10)/*为了能转为十进制以上的*/ printf(” %c”,x+55);

else

printf(” %d”,x);

)

free(s);/*释放顺序栈*/

printf(n\n M);

return 1;

}

4.主函数

int main()

{

Scqstack *s;

int choice;

datatype x;

do{

printfCU.置空栈2 •判栈空3 •入栈4•出栈5 •収栈顶元素6 •遍历7 •退出\「);

printf(H请输入选择(1〜7):”);

scanf(H%d'\&choice);

getchar(); switch(choice) case 1:s=Init_Seqstack();

if(s)

printf("B 空栈成功!\n H);break;

case 2:if(Empty_Seqstack(s))

printf(” 此为空栈An”);

else

printf(''此不为空栈.\n M);;break; case 3:printf("请输入一个整数:”);

scanf(” %d”,&x); if(Push_Seqstack(s,x)) printf(n入栈成功An”);

else

printf(',栈已满,无法入栈An M);;break;

case 4:if(Pop_Seqstack(s,&x))

printf("出栈成功,出栈元素为:%d\n”,x);

else

printf(”出栈失败,因栈为空.\n u);break;

case 5:if(Top_Seqstack(s,&x))

print”取栈顶元素成功,栈顶元素为:%d\n”,x);

else

printf(“取栈顶元素失败,因栈为空AiT);

相关文档
最新文档