实验二 栈和队列
一、 实验目的
1.熟悉栈和队列的顺序和链式存储结构
2.掌握栈和队列的基本运算
3.能够利用栈和队列的基本运算完成栈和队列应用的运算
二、 实验内容
2.假设以数组sequ[m]存放循环队列的元素,同时设变量rear和quelen 分别指示循环队列中队尾元素的位置和内含元素的个数。编写实现该循环队列的入队和出队操作的算法。提示:队空的条件:sq->quelen==0;队满的条件:sq->quelen==m。(文件夹:习题10_9)
/*循环队列的结构类型定义.h*/
#define m 5
typedef int datatype;
typedef struct
{ datatype sequ[m];
int rear, quelen;
}qu;
/*循环队列入队出队的主程序文件.cpp*/
#include <stdio.h>
#include<stdlib.h>
#include"循环队列的结构类型定义.h"
#include"置空队.h"
#include"入队.h"
#include"出队.h"
int main()
{ qu *sq;
datatype x, *p;
int key;
/*sq=new qu;*/
sq = (qu*)malloc(sizeof(qu));
setnull(sq);
do
{ /*cout<<"1.Enter Queue 2.Delete Queue -1.Quit:";
cin>>key;
*/
puts("1.Enter Queue 2.Delete Queue -1.Quit:");
scanf("%d",&key);
switch(key)
{ case 1: /*cout<<"Enter the Data:"; cin>>x;*/
puts("Enter the Data:");scanf("%d",&x);
enqueue(sq,x); break;
case 2: p=dequeue(sq);
if(p!=NULL) /*cout<<*p<<endl;*/
printf("%d/n",*p);
break;
case -1: exit(0);
}
}while(1);
return 0;
}
/*该程序输入非数字时将出错*/
/*置空队.h*/
void setnull(qu *sq)
{ sq->rear=m-1;
sq->quelen=0;
}
void enqueue( qu * sq,datatype x)
{
if(sq->quelen==m)
{
printf("队满,入队失败./n");
return;
}
sq->rear=(sq->rear+1)%m;
sq->sequ[sq->rear]=x;
sq->quelen++;
return;
}
datatype* dequeue(qu* sq)
{
datatype *x;
x=(datatype*)malloc(sizeof(datatype));
if(sq->quelen==0)
{
printf("队空,出队失败./n");
return 0;
}
*x=sq->sequ[(sq->rear-sq->quelen+1+m)%m];
sq->quelen--;
return x;
}
分享到:
相关推荐
- 学生应具备一定的编程基础,例如C语言,以便在实践中应用栈和队列的概念。 6. **教学对象**: - 教学对象是计算机专业的大三学生,有一定的编程基础,但实践经验较少,因此需要结合实例和实验加强理解。 通过...
本书《数据结构实验与习题——线性表栈和队列串数组树与二叉树》旨在帮助学生更好地理解和实践这些概念。 首先,书中介绍了C语言基础知识,这是实现数据结构的基础。C语言的基本输入输出、函数及其参数传递、以及...
在课程实验和作业中,可能会遇到严蔚敏教授教材中的相关习题,这些习题旨在加深对栈和队列的理解,提高问题解决能力。比如3.5、3.6、3.10、3.21、3.29和3.32题,涵盖了栈和队列的多种应用场景和算法设计。 总之,...
作业和实验部分,学生被要求完成严蔚敏教材配套的习题,包括涉及栈和队列的题目,如3.5、3.6、3.10、3.21、3.29和3.32题。同时,还要求学生编写一个实用软件,利用数据结构知识,这可能涉及到实际编程和文档编写,...
在本实验作业中,我们将深入探讨C语言编程中的一个重要数据结构——链表。链表是一种动态数据结构,它不像数组那样需要预先分配连续的内存空间,而是通过节点间的指针链接来存储数据。这对于处理不确定数量的数据...
在计算机科学中,数据结构是组织、管理和存储数据的方式,以便于高效地访问和修改。这里我们讨论的是顺序表、链表以及循环队列,这些都是基本的数据结构,广泛应用于算法设计和程序实现中。 顺序表是一种线性数据...
在这个“大二上——数据结构”实验中,我们将深入学习并实践一些基础且重要的数据结构,如栈、链表和队列。 1. **栈**(Stack):栈是一种后进先出(LIFO, Last In First Out)的数据结构,类似于现实生活中的堆叠...
在编写C程序时,需要注意变量的声明和定义、指针的使用、内存的分配与释放等问题。C语言中常用的数据结构包括: 1. 数组:一种存储同类型数据的结构,可以进行索引访问和修改。 2. 链表:一种存储不同类型数据的...
在华中科技大学计算机学院的C++实验课程中,"Queue_hustC++实验_"是一个针对初学者设计的项目,旨在让学生掌握数据结构中的基础概念——队列(Queue)的实现。队列是一种线性数据结构,遵循“先进先出”(FIFO, ...
王红梅教授通过清晰的解释和丰富的实例,帮助读者理解并掌握各种基本和高级数据结构,如数组、链表、栈、队列、树、图等。 首先,我们来了解一下数据结构的重要性。数据结构是计算机科学的基础,它研究如何在内存中...
在哈工大的《数据结构与算法》以及《软件开发实践》课程中,学生们通常会遇到一系列挑战性的作业和实验,这些任务旨在深化他们对数据结构和编程语言的理解。本资源包提供了一种独特的解决方案——Scheme语言的解法,...
- 假设系统中有三种类型的设备:A(3台)、B(2台)和C。 - 学生需要模拟设备的分配和回收过程,并确保设备独立性。 - 设备的分配应该考虑到设备的类型和数量,而设备的回收则需要确保释放的设备可以再次被分配。 通过...
课程内容通常包括:绪论(数据结构基本概念、学习的重要性、抽象数据类型和算法效率衡量)、线性结构、栈和队列、数组和广义表、字符串、树和二叉树、图、查找、排序以及文件等。每个主题都涵盖了理论和实际操作,...
7. 其他系统服务:包括信号处理、定时器、进程间通信(IPC)等,如`kill()`发送信号,`pipe()`和`socketpair()`创建管道,`msg*`、`sem*`和`shm*`函数族涉及消息队列、信号量和共享内存等IPC机制。 了解并熟练运用...
此外,课程介绍了几种经典的数据结构,如线性表、栈、队列、串、数组、广义表、树、二叉树、图,以及查找和排序算法,这些都是计算机科学中不可或缺的基础。 教材方面,推荐了严蔚敏的《数据结构》和《数据结构——...
主讲教师徐镜春推荐了一本教材——《数据结构与算法分析(C语言描述)》第二版,作者是Mark Allen Weiss。这本书深入浅出地讲解了数据结构和算法的基础知识,适合初学者和有一定经验的学习者。此外,还提供了一些...
新教学大纲设计的授课内容结构主要包括基本数据结构(如线性表、栈、队列、串、数组和广义表)和复杂数据结构(如树、二叉树、图和动态存储管理)。对于基本数据结构,强调掌握其特点、表示和实现,并通过编程实践...
课程内容涵盖了从绪论到内部排序等多个主题,如线性表、栈、队列、串、数组、广义表、树、二叉树、图、查找和排序等。每个主题都有相应的理论教学和实验实践。 考核方式以考试为主,总评成绩由期末成绩(70%)、...
2. **讲义和作业发布**: - 实验班讲义和作业发布(包括实习作业):`http://db.pku.edu.cn/mzhang/ds/honor/` - 实习课讲义和作业发布:`http://db.pku.edu.cn/mzhang/DS/shixi/` 这些资源提供了学习者获取课程...
- **栈和队列**:讲解栈和队列的原理、特性及应用场景。 - **串**:研究字符串处理技术及算法。 - **数组和广义表**:探讨数组的存储结构与广义表的概念。 - **树和二叉树**:分析树形数据结构的特性和操作。 - **图...