当前位置:知识问问>百科问答>c语言 栈的操作

c语言 栈的操作

2023-03-09 04:04:07 编辑:join 浏览量:623

问题补充说明:1、掌握顺序栈的定义、特点及常见算法。2、掌握链式栈的定义、特点及常见算法。3、参照给定栈的程序样例,验证给出的栈的常见算法。4、提交实验报告,报告内容包括:目的、要求、算法... 1、 掌握顺序栈的定义、特点及常见算法。 2、 掌握链式栈的定义、特点及常见算法。 3、 参照给定栈的程序样例,验证给出的栈的常见算法。 4、 提交实验报告,报告内容包括:目的、要求、算法 述、程序结构、主要变 说明、程序清单、调试情况、设计技巧、心得体会等。 三、 实验内容: 1、 顺序栈的操作和测试:设计一个主函数实现对顺序栈进行操作测试。测试方法为:依次把数据元素1,3,5,7,9入栈,并显示入栈结果;接着依次出栈其中的数据元素并在屏幕上显示。 2、 链式栈的操作:设计一个主函数实现对链式栈进行操作测试。测试方法为:依次把数据元素3,6,9,12,15入栈,并显示入栈结果;接着依次出栈其中的数据元素并在屏幕上显示。 3、 栈的应用:利用顺序栈求解表达式(a+b)*(c-d)的值(可预先把常规表达式转换为后缀表达式格式)。四、程序要求: 1、 顺序栈的长度自行确定。 2、 重点理解栈的算法思想,能够根据实际情况选择合适的存储结构。 3、 写出完整的程序并能调试通过。 展开

c语言 栈的操作

#include

#include

#defineMax100

typedefcharT;

typedefstructMyStack

{

Taa[Max];

unsignedintp;

}stack;

//创建空栈

stack*createEmptyStack()

{

stack*st=轮列众零半木六翻留慢(stack*)malloc(sizeof(stack));

inti=0;

for(i=0;i<Max;i++)

st->aa[i]=0;

st->p=0;

retur械告此溶百扬引权卫nst;

};

//栈判空

intisEmpty(conststack*st)

{

if来自(st->p==0)return1;

elsereturn0;

};

//求栈的大小

unsignedintsize(conststack*st)

{

returnst->p;

};

//push操作

voidpush(st资让粉医课青一接ack*st,constTa)

{

st->p=st->p+1;

if(st->p==Max)

{

printf("栈满\n");

st->p--;

return;

}

st->aa[st->p]=a;

};

//pop凯求华物或士管胡关千操作

Tpop(stack*st)

{

if(isEmpty兴况较聚高尽益张(st))

{

printf("栈空");

r360问答eturnNULL;

}

chart=st->aa[st->p];

st->p=st->p-1;

printf("%c",t);

returnt;

};

//栈销毁

voiddestroy(stack*st)

{

free(st);

};

intmain()

亮伯班确{

stack*st=createEmptyStack();

if(isEmpty(st))printf("MyStackisempt转y\n");

elseprintf("MyStackisnotempty\n");

push愿史牛火杆(st,'a')全百劳够团加呀量轻;

push(st,'b');

push(官运均st,'c');

push(st,'d');

push(st,'e');

printf("%d\n",size(st));

while(!isEmpty(st市因械将笑案利调息啊兵))pop(st);

des波troy(st);

system("pause");

r教广与染尽还eturn0;

}

标签:语言

版权声明:文章由 知识问问 整理收集,来源于互联网或者用户投稿,如有侵权,请联系我们,我们会立即处理。如转载请保留本文链接:https://www.zhshwenwen.com/answer/22215.html
热门文章