数据结构实验二栈基本操作_第1页
数据结构实验二栈基本操作_第2页
数据结构实验二栈基本操作_第3页
数据结构实验二栈基本操作_第4页
数据结构实验二栈基本操作_第5页
已阅读5页,还剩1页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、实验二 栈基本操作一、实验目的掌握栈的基本操作:初始化、判空、判满、入栈、出栈、取栈顶元素等运算。二、实验要求包含有头文件和main函数;1. 格式正确,语句采用缩进格式;2. 设计子函数实现题目要求的功能;3. 编译、连接通过,熟练使用命令键;4. 运行结果正确,输入输出有提示,格式美观。三、实验设备、材料和工具1. 奔腾2计算机或以上机型2. turboc2,win-tc四、实验内容和步骤实验内容:1. 分析程序。2. 完成程序编写和补充步骤:3. 确定数据的结构;4. 利用main函数调用各子函数;5. 调试、分析运行结果。五、实验报告要求1. 根据实验内容初步设计好程序,并从理论上排除

2、错误;2. 针对程序的健壮性准备好测试数据;3. 结果分析中如实填写运行后的结果,记录调试过程中产生的重要问题和解决方法。六、根据实验过程填写下面内容基础部分1.构建下列头文件,文件名称seqstack.h#define TRUE 1#define FALSE 0#define Stack_Size 500#define StackElementType inttypedef structStackElementType elemStack_Size; /*用来存放栈中元素的一维数组*/int top; /*用来存放栈顶元素的下标,top为-1表示空栈*/SeqStack;void InitS

3、tack(SeqStack *S) S-top = -1;int IsEmpty(SeqStack *S) /*判断栈S为空栈时返回值为真,反之为假*/return(S-top=-1?TRUE:FALSE);int IsFull(SeqStack *S)/*判断栈S为满栈时返回值为真,反之为假*/return(S-top=Stack_Size-1?TRUE:FALSE);int Push(SeqStack *S,StackElementType x)if(S-top=Stack_Size-1) return(FALSE); /*栈已满*/S-top+;S-elemS-top = x;retur

4、n(TRUE);int Pop(SeqStack *S,StackElementType *x) if(S-top = -1) /*栈为空*/return(FALSE);else *x = S-elemS-top;S-top-; /* 修改栈顶指针 */ return(TRUE);int GetTop(SeqStack *S,StackElementType *x) if(S-top = -1) /*栈为空*/return(FALSE);else*x = S-elemS-top; return(TRUE);2.构建判断回文序列的程序,完成运行和调试。回文序列如:序列1&序列2/包含顺序栈头文件

5、#includeseqstack.h/包含顺序栈头文件#include stdio.hvoid main() char ch,temp,str100; int i; SeqStack s;/定义顺序栈s InitStack(&s);/初始化顺序栈s printf(输入字符串(以&居中):n); scanf(%s,str); i=0; ch=stri; while(ch!=&)/括号内填入判断条件 Push(&s,ch);/变量ch值入栈 i+;/变量i自增 ch=stri;/赋值str中下一个元素值给ch变量 while(!IsEmpty(&s)/括号内填入判断条件 Pop(&s,&temp)

6、;/s出栈,出栈值存放与temp变量中 i+;/变量i自增 ch=stri;/赋值str中下一个元素值给ch变量 if(temp!=ch) /括号内填入判断条件 break; if(!IsEmpty(&s)|stri+1!=0)/括号内填入判断条件 printf(no!n); else printf(yes!n);3.编写程序使栈内元素倒置(设置两个栈,把其中一个栈的元素顺序出栈,并顺序放入第二个栈中,则第二个栈中元素已经倒置)!#include stdio.h/包含基本输入输出头文件#include seqstack.h/包含顺序栈头文件main()SeqStack s,t;/定义两个栈,s

7、和tchar str100,x;/定义字符数组str用于存放输入的入栈字符串,x用于出栈存放的变量int i;printf(请输入要入栈的字符:n);gets(str);/输入字符串InitStack(&s);/对栈s进行初始化InitStack(&t);/对栈t进行初始化for(i=0;stri!=0;i+)Push(&s,stri);/顺序读取字符数组内容并入s栈printf(第一个栈的内容:n);while(!IsEmpty(&s)Pop(&s,&x);/对栈s出栈,出栈数据放入变量x中printf(%cn,x);/输出x的值Push(&t,x);/对栈t入栈,入栈值为xprintf(第

8、二个栈的内容:n);while(!IsEmpty(&t)Pop(&t,&x);/对栈t出栈,出栈数据放入变量x中printf(%cn,x);/输出x的值提高部分4.编写程序用栈实现进制转换中的数据存放问题,完成进制转换功能(转换成二进制)。#includestdio.h#includeseqstack.hvoid main()int x,temp;SeqStack s;InitStack(&s);printf(请输入x:n);scanf(%d,&x);while(x0)temp=x%2;Push(&s,temp);/*整除2的余数进栈*/x=x/2;while(!IsEmpty(&s)Pop(&s,&temp);printf(%dn,temp);5.编写程序用栈实现求fibonacci数列第n(n=3)个数的值。#includestdio.h#includeseqstack.hvoid main ()int a,b;int temp;int i;SeqStack s;InitStack(&s);Push(&s,1);Push(&s

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论