实验三 栈和队列
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验报告三栈和队列
一、实验目的:
(1)掌握栈的基本操作的实现方法。
(2)利用栈先进后出的特点,解决一些实际问题。
(3)掌握链式队列及循环队列的基本操作算法。
(4)应用队列先进先出的特点,解决一些实际问题。
二、实验内容:
1、使用一个栈,将一个十进制转换成二进制。
粘贴源程序:
package Q1;
public class SeqStack {
public int element[];
public int top;
public static SeqStack p;
public SeqStack(int size){
this.element=new int[size];
this.top=-1;
}
public void push(int x){
this.top++;
this.element[this.top]=x;
}
public int pop(){
return this.top==-1 ? -1: (int)this.element[this.top--];
}
public int get(){
return this.top==-1 ? -1: (int)this.element[this.top];
}
public static void disp(SeqStack p){
int t = -2;
while(t!=-1){
t=p.pop();
if(t!=-1)
System.out.printf("%d",t);
}
}
public static void fun(int x){
int t;
while(x!=1){
t=x%2;
x=x/2;
p.push(t);
}
if(x==1)
p.push(x);
}
public static void main(String args[]){
p=new SeqStack(13);
fun(99);
disp(p);
}
}
粘贴测试数据及运行结果:
2、回文是指正读反读均相同的字符序列,如“acdca”、“dceecd”均是回文,但“book”不是回文。利用1中的基本算法,试写一个算法判定给定的字符串是否为回文。(提示:将一半字符入栈,依次弹出与另一半逐个比较)
粘贴源程序:
package Q2;
public class SeqStack {
public int element[];
public int top;
public static SeqStack p;
public SeqStack(int size){
this.element=new int[size];
this.top=-1;
}
public void push(int x){
this.top++;
this.element[this.top]=x;
}
public int pop(){
return this.top==-1 ? -1: (int)this.element[this.top--];
}
public int get(){
return this.top==-1 ? -1: (int)this.element[this.top];
}
public static void input(String str){
int i=0;
int t=str.length();
if(t%2==0){
for(i=0;i p.push(str.charAt(i)); }else{ for(i=0;i<=t/2;i++) p.push(str.charAt(i)); } } public static boolean compare(String str,SeqStack p){ boolean flag = true; char t; int length=str.length(); if(length%2==0){ for(int i=0;i t=str.charAt(length/2+i); if(t!=p.pop()){ flag=false;break; } } }else{ for(int i=0;i t=str.charAt(length/2+i); if(t!=p.pop()){ flag=false;break; } } } return flag; } public static void main(String[] args) { boolean flag; p=new SeqStack(100); String str =new String("acbca"); p.input(str); flag=pare(str, p); if(flag==true) System.out.println("yes"); else System.out.println("No"); } } 粘贴测试数据及运行结果: 3、使用3个队列分别保留手机上最近10个“未接来电”、“已接来电”、“已拨电话”。