栈子系统王志Word格式文档下载.docx

上传人:b****5 文档编号:19261265 上传时间:2023-01-04 格式:DOCX 页数:11 大小:133.78KB
下载 相关 举报
栈子系统王志Word格式文档下载.docx_第1页
第1页 / 共11页
栈子系统王志Word格式文档下载.docx_第2页
第2页 / 共11页
栈子系统王志Word格式文档下载.docx_第3页
第3页 / 共11页
栈子系统王志Word格式文档下载.docx_第4页
第4页 / 共11页
栈子系统王志Word格式文档下载.docx_第5页
第5页 / 共11页
点击查看更多>>
下载资源
资源描述

栈子系统王志Word格式文档下载.docx

《栈子系统王志Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《栈子系统王志Word格式文档下载.docx(11页珍藏版)》请在冰豆网上搜索。

栈子系统王志Word格式文档下载.docx

4.编写一个把十进制数转换成八进制数的应用程序。

二.进度安排:

第1天:

1、指导教师布置课程设计题目及任务

2、查找相关资料

第2~4天:

1、根据具体设计题目进行具体分析

2、对设计题目进行编码和调试

3、指导教师进行验收

第5天:

1、指导教师针对课程设计进行答辩

2、完成课程设计报告

指导教师(签字):

年月日

学院院长(签字):

年月日

 

目录

一、课程设计内容和要求-----------------------------------1

二、课程设计的目的-----------------------------------------3

三、课程设计分析-------------------------------------------3-4

四、算法描述-------------------------------------------4-5

五、源代码-------------------------------------------5-9

六、运行结果分析-------------------------------------------10-12

七、结束语-------------------------------------------12

八、参考文献-------------------------------------------12

题目_栈子系统_

一、课程设计的目的

本学期我们对《数据结构》这门课程进行了学习。

这门课程是一门实践性非常强的课程,为了让大家更好地理解与运用所学知识,提高动手能力,我们进行了此次课程设计实习。

这次课程设计不但要求实习者掌握《数据结构》中的各方面知识,还要求实习者具备一定的C语言基础和编程能力。

1.掌握栈的特点及其描述方法

2.掌握链式存储结构实现一个栈

3.掌握链栈的各种基本操作

4.掌握栈的典型应用的算法

二、课程设计的内容和要求

请选择菜单号(0…4):

三、课程设计分析

从逻辑结构、物理结构和基本运算入手展开说明本题目所涉及到的相关知识。

1.栈是限定在栈顶一端进行插入和删除的线性表。

2.栈是一种限制存取点的线性结构,最后入栈的先出栈,称为“后进先出”表。

3.进制转换的8进制是按低位到高位的顺序产生的,而通常输出是按高位到低位输出的,恰好与计算相反,因此转换过程中每得到一位8进制的数则进栈保存,转换完毕后出栈则正好是转换结果。

四、算法描述

1、栈初始化,构造一个空栈:

SeqStack*Snull();

,然后对栈依次进行入栈intPush(SeqStack*s,datatypex),出栈操作intPop(SeqStack*s,datatype*x);

以及数制转换操作voidConversion(intm);

2、栈的初始化操作分配量进行第一次分配base为栈底指针,若base=NULL,表明栈结构不存在;

称top为栈顶指针,其初值指向栈底即top=base可以作为栈空的标记,每当插入一个元素时,指针top增加1。

具体算法描述如下:

intPush(SeqStack*s,datatypex)

{if(s->

top==MAXLEN-1)

return0;

////栈满

else

{s->

top++;

s->

data[s->

top]=x;

return1;

}////指针后移,将新的元素插入到栈顶

}

intPop(SeqStack*s,datatype*x)

{if(0)

return0;

{*x=s->

top];

top--;

////退栈

3、栈是一个先进后出的线性表,在数制转换为八进制时,先把低位到高位的数字按照顺序进栈,输出的时候高位到低位输出。

算法课描述如下:

voidConversion(intn)

{SeqStack*s=Snull();

intx;

while(n)

{x=n%8;

n=n/8;

s->

while(s->

top>

-1)

{printf("

\t%d"

s->

top]);

}

getchar();

printf("

\n"

);

五、源代码

/////栈子系统

/////创建人:

/////创建时间:

2009/12/28

#include<

stdio.h>

malloc.h>

#defineMAXLEN10

typedefintdatatype;

typedefstruct

{datatypedata[MAXLEN];

inttop;

}SeqStack;

intPush(SeqStack*s,datatypex);

////执行入栈操作

intPop(SeqStack*s,datatype*x);

////执行出栈操作

datatypeReadTop(SeqStack*s);

voidShowStack(SeqStack*s);

voidConversion(intm);

voidmain()

{SeqStack*s;

inti=1,j,chioce,val,flag,m;

chara;

s=Snull();

while(i)

{

printf("

\n\t\t顺序栈操作应用演示"

\n\t\t****************************************************"

\n\t\t|1--------------进栈|"

\n\t\t|2--------------出栈|"

\n\t\t|3--------------显示栈元素|"

\n\t\t|4--------------数制转换|"

\n\t\t|0--------------返回|"

\n\t\t请选择序号(0--8):

"

chioce=getchar();

switch(chioce)

{case'

1'

:

j=1;

while(j)

{printf("

\n\t\t输入整数('

0'

结束)按回车:

"

scanf("

%d"

&

val);

if(val!

=0){

flag=Push(s,val);

if(flag==0){

j=0;

printf("

栈满"

}

else

};

break;

case'

2'

if(s->

top!

=-1){

Pop(s,&

printf("

\n\t\t出栈元素为:

%6d\n"

val);

elseif(s->

top==-1)

栈已为空!

break;

3'

ShowStack(s);

4'

printf("

\n\t\t输入十进制数'

m'

转换的八进制数后为'

scanf("

m);

Conversion(m);

i=0;

if(chioce=='

||chioce=='

{printf("

\n\t\t回车返回主菜单,输入0按回车退出程序.\n"

a=getchar();

if(a!

='

\xA'

i=0;

elsei=1;

SeqStack*Snull()

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

top=-1;

///top=-1表示栈空

returns;

{s->

{*x=s->

datatypeReadTop(SeqStack*s)

{

if(s->

return0;

栈顶元素为:

%3d"

return1;

voidShowStack(SeqStack*s)

{inti;

if(s->

printf("

栈已为空!

栈元素:

for(i=s->

top;

i>

=0;

i--)

data[i]);

{x=n%8;

六﹑运行结果:

七、实验结论

有关栈的存储问题,实验开始时无法为栈进行存储,为什么?

栈的初始化操作分配量进行第一次分配base为栈底指针,若base=NULL,表明栈结构不存在;

通过本次试验,我们了解了栈的建立,存储,输出以及数制转换的问题,对栈的结构更加清楚,明确。

八、参考文献

1.杨路明C语言程序设计教程北京邮电大学出版社

2.严蔚敏吴伟民数据结构清华大学出版社

3.陈媛何波蒋鹏刘洁数据结构学习指导-实验指导-课程设计机械工业出版社

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

当前位置:首页 > 考试认证 > 其它考试

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

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