- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
实验三 栈和队列
《数据结构》课程实验 实验报告三
第三章 栈和队列的操作
实验题目: 实验三 栈和队列的操作
学号: 班级:计算机111 姓名: 张婷
指导教师: 游 静
实验完成时间: 2013.4.22
实验成绩:
实验三 栈和队列的操作
一、实验学时 2学时
二、背景知识
1.栈:
(1).入栈和进栈操作只能从栈顶一端进行;
(2).LIFO(后进先出);
(3).栈的两种存储定义:顺序栈和链式栈。
2.队列:
(1).入队操作从队尾进行,出队操作从对头进行;
(2).FIFO(先进先出);
(3).队列的两种存储定义:顺序队和链队。
三、目的要求
掌握栈的顺序表示和实现。
Typedef struct{
SelemType *base;
SelemType *base;
Int stacksize;
}sqstack;
掌握队列的链式表示和实现以及顺序表示和实现。
链队列:
Typedef struct Qnode{
QelemType data;
struct Qnode *next;
} Qnode,*Queueptr;
Typedef struct{
Queueptr front;
Queueptr rear;
}linkQueue;
顺序队列:
#define MAXQSIZE 100
Typedef struct{
Qelemtype *base;
int front;
int rear;
}sqQueue;
四、实验内容
顺序栈和循环队列的创建、入栈(队)、出栈(队)等基本操作。
数制转换问题
【问题描述】
十进制数N和其它d进制数的转换是计算机实现计算的基本问题。试编制一段程序满足下列要求:对于输入的任意一个非负十进制整数,打印输出与其等值的八进制数。
【基本要求】
首先初始化一个顺序栈,通过入栈出栈操作辅助完成数制的转换操作。
五、程序实例:顺序队列的入队和出队操作。
【问题描述】
使有数组创建队列。程序使有选项运行队列的操作,如:输入1表示元素入队,输入2表示元素出队,输入3表示结束程序运行,并且将队列剩余元素输出。
【基本要求】
首先使有数组创建队列,然后编写入队函数和出队函数,最后编写主函数。
【测试数据】
如:输入队列的元素是:[2][3][4][5][6]
取出队列的元素是:[2]
剩余队列的元素是:[3][4][5][6]
【实现提示】
#define MAXQUEUE 10 /* 队列的最大容量 */
int queue[MAXQUEUE]; /* 队列的数组定义 */
int front = -1; /* 队头 */
int rear = -1; /* 队尾 */
/*―――――――――――入队―――――――――――*/
int enqueue(int value)
{
if ( rear = MAXQUEUE ) /* 检查队列是否全满 */
return -1; /* 无法存入 */
rear++; /* 队尾指针前移 */
queue[rear] = value; /* 存入队列 */
}
/*―――――――――――出队―――――――――――*/
int dequeue()
{
if ( front == rear ) /* 检查队列是否为空 */
return -1; /* 无法取出 */
front++; /* 队头指针前移 */
return queue[front]; /* 队列取出 */
}
实验结果
1、第一题
顺序栈实现
#includestdio.h
#define ElementTyp
原创力文档


文档评论(0)