实验4:栈和队列的基本操作实现及其应用之《顺序栈》

实验4:栈和队列的基本操作实现及其应用之顺序栈

一、实验目的

1、   熟练掌栈和队列的结构特点,掌握栈和队列的顺序存储和链式存储结构和实现。

2、   学会使用栈和队列解决实际问题。

二、实验内容

1、自己确定结点的具体数据类型和问题规模:

分别建立一个顺序栈和链栈,实现栈的压栈和出栈操作。

分别建立一个顺序队列和链队列,实现队列的入队和出队操作。

2、设计算法并写出代码,实现一个十将二进制转换成2进制数。

3、选做题(*

设计一个模拟饭堂排队打饭管理软件,实现“先来先打饭”的排号叫号管理。

三、实验步骤

1、依据实验内容分别说明实验程序中用到的数据类型的定义

    实验中选用的是整型来进行栈的数据输入。

2、相关操作的算法表达;

    入栈:将栈顶指针top加1,然后在top指向的位置填入元素x。

    出栈:只需取出栈顶元素,然后将栈顶元素top减1。

3、完整程序;   

#include
using namespace std;
const int S=10;
class SeqStact
{
	public:
		SeqStact(){top=-1;}
		~SeqStact(){}
		void Push(int x);
		int Pop();
		int Gettop(){ if(top!=-1)  return data[top]; } 
		int Empty(){if(top==-1)return 1; else return 0;}
	private:
	    int data[S];
		int top;	
};
void SeqStact::Push(int x)
{
	if(top==S-1) throw"上溢";
	data[++top]=x; 
}
int SeqStact::Pop()
{   
    int x;
	if(top==-1) throw"下溢";
	x=data[top--];
	return x;	
}

int main()
{   
    int i,s,x;
	SeqStact Stact;
	cout<>i;
	cout<<"\t\t\t是否继续输入?(1/0):";
	cin>>s;
	Stact.Push(i);
	}
	while(s);
	
	while(1)
	{
	cout<>x;
	cout<>i;
		        cout<<"\t\t\t是否继续输入?(1/0):";
		        cin>>s;
		        Stact.Push(i);
	          }
		        while(s);
		        break;
			}
		case 2: 
	     	{
			    cout<<"\t\t\t出栈:"<

4、总结、运行结果和分析。

实验4:栈和队列的基本操作实现及其应用之《顺序栈》_第1张图片

实验4:栈和队列的基本操作实现及其应用之《顺序栈》_第2张图片

实验4:栈和队列的基本操作实现及其应用之《顺序栈》_第3张图片

实验4:栈和队列的基本操作实现及其应用之《顺序栈》_第4张图片

5、总体收获和不足,疑问等。

      在顺序栈中,尝试运用循环的方式来进行入栈。就是在判断栈是否为空时,书上显示的代码无法在程序中运行,所以我转换成其他语句方式来进行运行了。在课堂上,老师说书上的是算法,这与实际的代码不一样,所以这个提醒了我们注重算法,但代码需灵活运用,不能太死板的照书打。



你可能感兴趣的:(实验4:栈和队列的基本操作实现及其应用之《顺序栈》)