堆栈和队列
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
陕西科技大学实验报告
班级:学号:姓名:实验组别:
实验日期:报告日期:成绩:
报告内容:(目的和要求、原理、步骤、数据、计算、小结等)
实验名称:栈与队列
一、实验目的
1.掌握栈、队列的思想及其存储实现。
2.掌握栈、队列的常见算法的程序实现。
二、实验要求
1.编写函数,采用链式存储实现栈的初始化、入栈、出栈操作。
2.编写函数,采用顺序存储实现栈的初始化、入栈、出栈操作。
3.编写函数,采用链式存储实现队列的初始化、入队、出队操作。
4.编写函数,采用顺序存储实现队列的初始化、入队、出队操作。
5.编写一个主函数,在主函数中设计一个简单的菜单,分别调试
上述算法。
三、实验原理(流程图):
四、实验数据(源代码):
package B_Stack;
public class SqLinkStackDemo {
// 主函数中设计一个简单的菜单,分别调试上述算法
public static void main(String[] args) throws Exception { /** 顺序栈 */
SqStack s = new SqStack(8);
// 顺序栈栈的初始化
s.clear();
// 顺序栈的入栈
System.out.println("顺序栈入栈:");
s.push(5);
s.push('c');
s.push("Hello");
s.display();
// 顺序栈的出栈
System.out.println('\r' + "顺序栈出栈:");
s.pop();
s.display();
/** 链表栈 */
LinkStack ls = new LinkStack();
// 链表栈的初始化
ls.clear();
// 链表栈的入栈
System.out.println('\r' + "链表栈入栈:");
ls.push(88);
ls.push('Z');
ls.push("HelloWorld");
ls.display();
// 顺序栈的出栈
System.out.println('\r' + "链表栈出栈:");
ls.pop();
ls.display();
/** 顺序队列 */
CircleSqQueue circleSqQueue = new CircleSqQueue(8);
// 顺序存储实现队列的初始化
circleSqQueue.clear();
// 顺序存储实现队列的入队
System.out.println('\r' + "顺序队列入队:");
circleSqQueue.offer(666);
circleSqQueue.offer("队列");
circleSqQueue.offer('Q');
circleSqQueue.display();
// 顺序存储实现队列的出队
System.out.println('\r' + "顺序队列出队:");
circleSqQueue.pool();
circleSqQueue.display();
/** 链式队列 */
LinkQueue linkQueue = new LinkQueue();
// 链式存储实现队列的初始化
linkQueue.clear();
// 链式存储实现队列的入队
System.out.println('\r' + "链式队列入队:");
linkQueue.offer(999);
linkQueue.display();
// 链式存储实现队列的出队
System.out.println('\r' + "链式队列出队:");
linkQueue.pool();
linkQueue.display();
}
}
package B_Stack;
public interface IStack {
public void clear();
public boolean isEmpty();
public void push(Object x) throws Exception;
public Object pop();
}
package B_Stack;
public class SqStack implements IStack {
private Object[] stackElem;
private int top;
public SqStack(int maxSize) {
top = 0;
stackElem = new Object[maxSize];
}
// 顺序栈的初始化
public void clear() {
top = 0;
}
public boolean isEmpty() {
return top == 0;
}
// 顺序栈的出栈
public Object pop() {