欢迎来到天天文库
浏览记录
ID:30173410
大小:129.54 KB
页数:6页
时间:2018-12-27
《数据结构实验二栈基本操作》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库。
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#defineTRUE1#defineFALSE0#defineStack_Size500#defineStackElementTypeinttypedefstruct{StackElementTypeelem[Stack_Size];/*用来存放栈中元素的一维数组*/inttop;/*用来存放栈顶元素的下
3、标,top为-1表示空栈*/}SeqStack;voidInitStack(SeqStack*S){S->top=-1;}intIsEmpty(SeqStack*S)/*判断栈S为空栈时返回值为真,反之为假*/{return(S->top==-1?TRUE:FALSE);}intIsFull(SeqStack*S)/*判断栈S为满栈时返回值为真,反之为假*/{return(S->top==Stack_Size-1?TRUE:FALSE);}intPush(SeqStack*S,StackElementTypex){if(S->top==
4、Stack_Size-1)return(FALSE);/*栈已满*/S->top++;S->elem[S->top]=x;return(TRUE);}intPop(SeqStack*S,StackElementType*x){if(S->top==-1)/*栈为空*/return(FALSE);else{*x=S->elem[S->top];S->top--;/*修改栈顶指针*/return(TRUE);}}intGetTop(SeqStack*S,StackElementType*x){if(S->top==-1)/*栈为空*/ret
5、urn(FALSE);else{*x=S->elem[S->top];return(TRUE);}}2.构建判断回文序列的程序,完成运行和调试。回文序列如:序列1&序列2//包含顺序栈头文件#include"seqstack.h"//包含顺序栈头文件#include"stdio.h"voidmain(){charch,temp,str[100];inti;SeqStacks;//定义顺序栈sInitStack(&s);//初始化顺序栈sprintf("输入字符串(以&居中):");scanf("%s",str);i=0;ch=str
6、[i];while(ch!='&')//括号内填入判断条件{Push(&s,ch);//变量ch值入栈i++;//变量i自增ch=str[i];//赋值str中下一个元素值给ch变量}while(!IsEmpty(&s))//括号内填入判断条件{Pop(&s,&temp);//s出栈,出栈值存放与temp变量中i++;//变量i自增ch=str[i];//赋值str中下一个元素值给ch变量if(temp!=ch)//括号内填入判断条件break;}if(!IsEmpty(&s)
7、
8、str[i+1]!=' ')//括号内填入判断条件pr
9、intf("no!");elseprintf("yes!");}3.编写程序使栈内元素倒置(设置两个栈,把其中一个栈的元素顺序出栈,并顺序放入第二个栈中,则第二个栈中元素已经倒置)!#include"stdio.h"//包含基本输入输出头文件#include"seqstack.h"//包含顺序栈头文件main(){SeqStacks,t;//定义两个栈,s和tcharstr[100],x;//定义字符数组str用于存放输入的入栈字符串,x用于出栈存放的变量inti;printf("请输入要入栈的字符:");gets(str)
10、;//输入字符串InitStack(&s);//对栈s进行初始化InitStack(&t);//对栈t进行初始化for(i=0;str[i]!=' ';i++)Push(&s,str[i]);//顺序读取
此文档下载收益归作者所有