实验3:栈和队列的基本操作实现及其应用——顺序队列和链队列

实验3:栈和队列的基本操作实现及其应用

一、实验目的

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

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

二、实验内容

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

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

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

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

3、选做题(*

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

三、实验步骤

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

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

3、完整程序;

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

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

四、实验要求

1、   按照数据结构实验任务书,提前做好实验预习与准备工作。

2、   加“*”为选做题。做好可加分。

3、   严格按照数据结构实验报告模板和规范,及时完成实验报告。

4、   在个人主页上发文章提交作业。

5、   实验课会抽查3-5人,希望你可以被查到!


顺序队列和链队列

1、顺序队列

头文件:
#include  
using namespace std;  

Cirqueue类:
class Cirqueue  
{  
private:   
    int data[Size];  
    int front,rear;  
public:  
    Cirqueue(){front = rear = Size-1;}  
    ~Cirqueue(){}  
    void Enqueue(int a[],int n);  
    void Dequeue();  
};  

入队函数:
void Cirqueue::Enqueue(int a[],int n)  
{  
    for(int i=0;i

出队函数:
void Cirqueue::Dequeue()  
{  
	
    while(front!=rear)  
    {  
		front = (front+1)%Size;
        cout<

主函数:
void main()  
{   
	Cirqueue a;
    int number[8] = {0,1,2,3,4,5,6,7}; 
    a.Enqueue(number,8);  
    a.Dequeue();    
}

2、链队列

头文件:
#include  
using namespace std;

Node结构体:
struct Node
{
	int data;
	Node * next;
}; 
static Node *front,*rear;

入队函数:
void Enqueue(int a[],int n)  
{   
	Node * s = NULL;
	s = new Node;
	front = rear=s;
    for(int i=0;idata = a[i];
		s->next = NULL;
		rear->next = s;
		rear = s;
    };
}   

出队函数:
void Dequeue()  
{
	while(front->next != NULL)
	{
		Node * p = front->next;
        cout<data<next = p->next;
		delete p;
	}
} 

主函数:
void main()  
{  
    int number[8] = {0,1,2,3,4,5,6,7}; 
    Enqueue(number,8);  
    Dequeue();
}

3、实验结果(以上两个结果相同)
实验3:栈和队列的基本操作实现及其应用——顺序队列和链队列_第1张图片
















你可能感兴趣的:(数据结构)