链栈的有关操作文档格式.docx

上传人:b****6 文档编号:19388039 上传时间:2023-01-05 格式:DOCX 页数:7 大小:35.64KB
下载 相关 举报
链栈的有关操作文档格式.docx_第1页
第1页 / 共7页
链栈的有关操作文档格式.docx_第2页
第2页 / 共7页
链栈的有关操作文档格式.docx_第3页
第3页 / 共7页
链栈的有关操作文档格式.docx_第4页
第4页 / 共7页
链栈的有关操作文档格式.docx_第5页
第5页 / 共7页
点击查看更多>>
下载资源
资源描述

链栈的有关操作文档格式.docx

《链栈的有关操作文档格式.docx》由会员分享,可在线阅读,更多相关《链栈的有关操作文档格式.docx(7页珍藏版)》请在冰豆网上搜索。

链栈的有关操作文档格式.docx

(6)入栈

2.需求分析

本演示程序在VC++6.0环境下编写调试,完成初始化链栈,将一个元素入栈及出栈,,多个元素连续入栈,还有判断栈是否为空等操作。

3、概要设计

A:

主函数main()

主函数里需要调用上述函数,大体思路是先调用初始化函数,然后输出“需要入栈的元素个数n”提示,接着进行n作为实参的值的输入,然后调用(3)中的那个setup_stack函数,输出栈中所有元素值,进行出栈几次,在输出栈中元素值。

B:

初始化函数*initstack()

主要是对栈进行初始化。

C:

输出栈中元素函数print(linkstack*top)

D:

入栈函数*push(linkstack*top,datatypex)

E:

出栈函数*pop(linkstack*top)

4.调试分析

主要叙述本程序调试过程的中所遇到主要问题及其体会:

本程序基本上与单链表相似,只不过其所有操作都限定在栈头进行操作。

本程序的基本操作并不太难,关键在于它的头指针唯一标示了该栈,调用子函数时有时无法进行,则必是头指针调用出了问题。

在调试过程中试了好多次,最后才成功。

5.测试结果(运行结果)

 

A:

初始化*initstack()

B:

n个元素连续入栈*setup_stack(linkstack*top,intn)

一个元素入栈*push(linkstack*top,datatypex)

D:

元素出栈*pop(linkstack*top)

E:

判断栈是否非空;

6.源程序(带注释)

程序清单

#include<

stdio.h>

stdlib.h>

malloc.h>

#definemaxsize50

typedefintdatatype;

/*typedefstruct{

datatypestack[maxsize];

inttop;

}seqstack;

*/

typedefstructnode{

datatypedata;

structnode*next;

}linkstack;

//初始化函数

linkstack*initstack()

{

linkstack*top;

top=NULL;

returntop;

}

//输出栈中元素函数

voidprint(linkstack*top)

{linkstack*p;

p=top;

if(p==NULL)printf("

empty"

);

else

{

do

{printf("

%6d"

p->

data);

p=p->

next;

}while(p!

=NULL);

printf("

\n"

//出栈函数

linkstack*push(linkstack*top,datatypex)

linkstack*p;

p=(linkstack*)malloc(sizeof(linkstack));

p->

data=x;

next=top;

top=p;

intstackempty(linkstack*top)

{return(top?

0:

1);

//n个元素连续入栈函数

linkstack*setup_stack(linkstack*top,intn)

{inti,x;

for(i=0;

i<

n;

i++)

{scanf("

%d"

&

x);

top=push(top,x);

print(top);

returntop;

linkstack*pop(linkstack*top)

{linkstack*q;

if(!

top){printf("

栈为空"

q=top;

top=top->

free(q);

//主函数

voidmain()

{linkstack*top;

inti,x,k,n;

do{

printf("

\n\n\n"

printf("

\n===================================="

\n\t1.初始化链栈;

"

\n\t2.将一个元素入栈"

\n\t3.n个元素连续入栈"

\n\t4.输出栈所有元素"

\n\t5.判断栈是否非空;

//若栈空返回值为1,否则返回值为0"

\n\t6.出栈"

\n====================================="

\n\t请输入您的选择(1、2、3、4、5、6)"

scanf("

k);

switch(k)

{

case1:

已初始化链栈!

top=initstack();

}break;

case2:

请输入元素x值:

scanf("

printf("

输入元素后栈变为:

print(top);

case3:

请输入要入栈的元素个数n=:

n);

top=setup_stack(top,n);

case4:

{printf("

当前栈中元素为"

print(top);

case5:

stackempty(top));

case6:

出栈前栈中元素为:

top=pop(top);

出栈后剩余栈中元素为:

}

}while(k!

=0);

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

当前位置:首页 > 初中教育 > 其它课程

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

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